-1

これは、グリッド ビューで単純なアダプターを使用した以下のコードです。すべて正常に動作していますが、コードにチェックボックスを追加したいので、どうすればよいですか? シンプルなアダプターにチェックボックスを追加するにはどうすればよいですか? 私のコードは、ファイルがディレクトリ表示アイコンであるかどうかを確認します。それ以外の場合は画像を表示します。チェックボックスを追加して、ユーザーがチェックボックスを選択し、複数の画像を選択したチェックボックスを削除したいだけです

 SimpleAdapter simpleAdapter;
 GridView gridView;

public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

File photos = new File(getFilesDir(),"photos");
photos.mkdirs();

File root1 = new File("/data/data/com.myexample.folder/files/");

 currentParent = root1;
currentFiles = root1.listFiles();

  currentFilePath = new String[currentFiles.length];
  int count = 0;

 for(File f:currentFiles)
 {   
currentFilePath[count] = f.getAbsolutePath();
 count++;
}


 gridView =(GridView)findViewById(R.id.grid);
 gridView.setOnItemClickListener(new OnItemClickListener(){
public void onItemClick(AdapterView<?> parent, View view, int 
position,long id) {


 if(currentFiles[position].isDirectory())
 {
    root = new File("/data/data/com.myexample.folder
   /files/"+FileName(currentFilePath[position])+"/");

    Log.e("Root first",root+ " ");

    currentFiles = root.listFiles();

    inflateListView(currentFiles);
 }
else if(currentFiles[position].isFile())
{
      inflateListView(currentFiles);    
           }

 private void inflateListView(File[] files){

List<Map<String,Object>> listItems = new ArrayList<Map<String,Object>>();

for(int i=0;i<files.length;i++)
{       
Map<String, Object> listItem = new HashMap<String, Object>();

if(files[i].isDirectory())
{
    listItem.put("icon", R.drawable.folder);
}
else
{
    listItem.put("icon", R.drawable.file);
}

listItem.put("fileName", files[i].getName());
listItems.add(listItem);
}

simpleAdapter=new SimpleAdapter(this,listItems,R.layout.line,new String[] 
{"icon","fileName"},new int[]{R.id.icon,R.id.file_name});
 gridView.setAdapter(simpleAdapter);
4

2 に答える 2

0

にチェックボックス ビューを含めますR.layout.line.xml。次に、ArrayAdapter クラスを (SimpleAdapter を使用せずに) 拡張してgetView()、次のようにメソッドをオーバーライドする必要があります。

@Override
public View getView(final int position, View convertView, ViewGroup parent) {
    CheckBox cb = (CheckBox) convertView.findViewById(R.id.your_checkbox);
    cb.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            ...
        }
    });

    return convertView;
}
于 2013-04-29T05:47:48.790 に答える