2013-08-28 52 views
0

我知道這個問題已發佈多次,我瀏覽幾乎所有的人,但有沒有結果,我正在執行刪除從MySQL數據庫中的一個項目,但它是不是清爽,這裏是代碼的onclicklistener和按鈕的:刷新列表視圖onPOST等執行的AsyncTask

的onClick監聽器:從的AsyncTask

holder.void_button.setOnClickListener(new OnClickListener(){ 

    public void onClick(View v) { 
    adapter = new CustomListViewVoidAdapter(context,R.layout.mytemp, items); 
    item_selected= items.get(position); 
     new DeleteOrder().execute(); 
       }}); 
      vi.setTag(holder); 
     } 

OnPostExecute:

protected void onPostExecute(String unused){ 
      adapter.remove(item_selected); 
      adapter.notifyDataSetChanged(); 
     } 

適配器是instatiated水珠盟友,你能檢查問題出在哪裏嗎? 它不返回任何錯誤,只是刪除該項目而不刷新。

問候

拉爾夫

回答

0

你最好重新設置適配器列表視圖中onPostExecute新值。在這種情況下,您不需要撥打notifyDataSetChanged。也不要在onClick中重新適配適配器,這不是必需的。

1

把它扔在那裏,但是,你有沒有試過adapter.notifyDataSetInvalidated();?這迫使更新。

另外,把代碼放在asynctask!

像這樣:

protected void onPostExecute() { 

    adapter.notifyDataSetChanged(); 
    adapter.notifyDataSetInvalidated(); 


} 
+0

啊它是在的AsyncTask,我剛纔複製的onpostexecute部分,ANW生病嘗試notifydatasetinvalidated並取回到u ..謝謝 – ralph

+0

等待。你已經在OnCreate或其他地方聲明瞭listview,對嗎?否則,UI應該如何知道你在引用Listview? (試圖澄清,看下面的評論)。 – Paul

+0

沒有的onCreate ..它是一個適配器......我宣佈在代碼 – ralph

0

添加以下行postExecute。

if(adapter != null) { 
    adapter = new CustomListViewVoidAdapter(context,R.layout.mytemp, items); 
    YourListviewObject.setAdapter(adapter); 
} 
+0

它在該行返回一個錯誤的開始列表視圖:lv.setAdapter(適配器) 應在postexecute代碼是這樣的?: adapter = new CustomListViewVoidAdapter(context,R.layout.mytemp,items); lv.setAdapter(adapter); adapter.remove(item_selected); adapter.notifyDataSetChanged(); – ralph

+0

adapter.remove(item_selected); adapter.notifyDataSetChanged();這兩條線不是必需的。什麼是錯誤? –

+0

還要添加如果statment,我更新了我的答案檢查 –