2013-04-29 34 views
-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); 

回答

0

您需要使用自定義適配器使用SimpleAdapter不會做same.Filling gridview的。

+0

但如何?我如何根據我的代碼使用自定義適配器?即時通訊使用列表> listItems = new ArrayList >(); – 2013-04-29 05:46:43

+0

從您的自定義適配器中擴展BaseAdapter,並將Arraylist傳遞到您的適配器構造器中以獲取數據,例如 'public class MyAdapter extends BaseAdapter { \t private Context mContext; private ArrayList > myobj; \t \t public MyAdapter(Context c,ArrayList > myobj){this.myobj = myobj; \t \t \t mContext = c; \t \t}' 並最終重寫getview()方法 – 2013-04-29 06:23:23

0

在您的R.layout.line.xml中包含複選框視圖。然後,你必須擴展(不使用SimpleAdapter)來覆蓋getView()方法,像這樣一個ArrayAdapter類:

@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; 
} 
+0

thnx但我如何exate數組適配器類?我的代碼都在上面,所以告訴我我如何擴展? – 2013-04-29 05:56:19

+0

我建議你掌握一些關於如何首先擴展一個類的基礎知識。 – Neoh 2013-04-29 13:20:03

相關問題