2013-08-20 60 views
0

在我的代碼中有一個列表視圖,其中我正在執行刪除列表視圖項的操作。它的工作原理,但仍然顯示在列表視圖中。它在第二項活動中。它只有在進入第一性後纔會消失,然後返回。請給我所做的改變。從列表視圖中刪除項並從diplay

Getclicker.java

public void onItemClick(AdapterView<?> a, View v, int position, final long id) { 
        AlertDialog.Builder adb=new AlertDialog.Builder(Getclicker.this); 
        adb.setTitle("Delete?"); 
        adb.setMessage("Are you sure you want to delete the event" + (position+1)); 
        final int positionToRemove = position; 
        adb.setNegativeButton("Cancel", null); 

         adb.setPositiveButton("Ok", new AlertDialog.OnClickListener() { 
          @Override 
          public void onClick(DialogInterface dialog, int which) { 

           eventsData1.delete(id); 
           adapter.notifyDataSetChanged(); 
          }}); 
         adb.show(); 
        } 

數據庫中刪除方法

public void delete(long id) { 
     SQLiteDatabase db = this.getReadableDatabase(); 

     db.delete(DATABASE_TABLE, KEY_ROWID + " = ?", 
       new String[] { String.valueOf(id)}); 
     db.close(); 
    } 
+0

你的意思是你的列表視圖不刷新? – KOTIOS

+0

是......................... – user2681154

+1

你能發表一些關於'eventsData1.delete(id)的細節;' – Pravin

回答

1

依我之見,現在你要刪除從數據庫中的項目,但你不能刪除它來自適配器,這就是爲什麼刪除的項目仍然在ListView中。當您轉到其他活動並返回到listView時,會將更改的數據加載到適配器中。

如果您想notifyDataSetChanged()有效,您應該從適配器中刪除一個項目。 。 。

你的代碼應該是這樣的:

eventsData1.delete(id); 
adapter.deleteItem(id); 
adapter.notifyDataSetChanged(); 

添加刪除()方法,在你的適配器類。 。 。

+0

沒有適配器類我有defined.i只導入它。 – user2681154

1

你刪除的ID即加長型的基礎上

eventsData1.delete(id); 

至於你提到你的刪除操作工作正常,但問題是ListView中你應該用「地位」

eventsData1.delete(position); 
adapter.notifyDataSetChanged(); 
+0

假設op具有正確連接的數據層,以便適配器反映當前狀態。 – ChiefTwoPencils

0

令人耳目一新。直到並且除非您正在更改活動,否則不會刷新您的列表。你真的要做的是,你必須添加這段代碼在刪除操作在onItemClick結束的行的末尾:

yourListView.setAdapter(yourAdapter); 
+0

當您發佈了答案時,OP會收到通知......無需每次回答時都會發表評論 –

相關問題