2014-02-11 91 views
0

我從SD卡編寫的代碼,以刪除圖像,和我的代碼只是正常工作,如果我想刪除整行,而不只是像刪除列表視圖項排

實際上,列表視圖中的每一行都包含一個帶有兩個按鈕的圖像,所以每當我點擊刪除按鈕時,它都會刪除不刪除該特定行的圖像。

final ImageButton btnDelete = (ImageButton) convertView.findViewById(R.id.btnDelete); 
     btnDelete.setOnClickListener(new OnClickListener() { 

      @Override 
      public void onClick(View arg0) { 
       // TODO Auto-generated method stub 
       fileName = ImageList.get(position).toString().substring(strPath.lastIndexOf('/')+1, strPath.length()); 
       String fileToDelete = Environment.getExternalStorageDirectory().getPath() + fileName; 
       Log.d("FileToDelete", fileToDelete); 
        File myFile = new File(fileToDelete); 
         if(myFile.exists()) 
         myFile.delete(); 
       ((BaseAdapter) lstView.getAdapter()).notifyDataSetChanged(); 
      } 
     }); 

getView(...)

 public View getView(final int position, View convertView, ViewGroup parent) { 
      // TODO Auto-generated method stub 

     // If this item is to be synced 
      if(flags.get(position)) { 
       startUpload(position); 

      // Mark as synced 
      flags.put(position, false); 

     } 
+1

可以請你把你的適配器類??? – Shrikant

+0

適配器顯示的數據是什麼?什麼樣的數據收集? – gunar

+0

您必須從列表中刪除項目並使用更新後的列表調用適配器。假設您有ArrayList myList,然後從myList中刪除該項目並用新的myList調用您的適配器。 – Ravi

回答

2

你需要得到認爲你是綁定到列表視圖。你可以使用位置變量來獲得該視圖。和刪除像

myList.remove(position); 

,然後調用adapter.notifyDataSetChanged();

+0

我用ImageList.remove(position); berfore調用((BaseAdapter)lstView.getAdapter())。notifyDataSetChanged();並完成:)我勾選爲有用的,並會在7分鐘後接受 – Sun

+0

好的........... :) –

+0

您的歡迎兄弟 – Sun