我有一個列表視圖,它使用不同類中的基礎適配器從我的數據庫顯示多個數據。我想每次刪除或添加項目到我的數據庫時刷新我的列表視圖。notifyDataSetChanged()不適合我
這是我的代碼,但它不刷新我的列表視圖。請幫我在哪裏應該把notifyDataSetChanged()
。
BaseAdapter ad = ((orderadapter)list.getAdapter());
ad.notifyDataSetChanged();
謝謝。
我有一個列表視圖,它使用不同類中的基礎適配器從我的數據庫顯示多個數據。我想每次刪除或添加項目到我的數據庫時刷新我的列表視圖。notifyDataSetChanged()不適合我
這是我的代碼,但它不刷新我的列表視圖。請幫我在哪裏應該把notifyDataSetChanged()
。
BaseAdapter ad = ((orderadapter)list.getAdapter());
ad.notifyDataSetChanged();
謝謝。
首先我decalre適配器作爲一個全局變量:
public ListAdapter adapter = null;
現在我初始化我的ListView(其中我必須把項目)在onCreate()方法。這個列表視圖的佈局是在XML文件中定義:
listView = (ListView)findViewById(R.id.myList);
現在,我得到了一個ArrayList中顯示所有的值,然後用此ArrayList初始化適配(你可以使用任何其它數據存儲技術,以及):
adapter = new ListAdapter(availableMessageNotifications,MessageNotificationActivity.this);
listView.setAdapter(adapter);
listView.setChoiceMode(ListView.CHOICE_MODE_SINGLE);
然後我設置onItemClickListener上的列表中的每一個項目:
OnItemClickListener listener = new OnItemClickListener(){
@Override
public void onItemClick(AdapterView<?> adapter, View view, int position,long id) {
//your code for an item clicked.
}
listView.setOnItemClickListener (listener);
我希望這會幫助你。
你應該從UI線程中調用notifyDataSetChanged():
yourList.remove(position);
runOnUiThread(new Runnable() {
public void run() {
yourAdapter.notifyDataSetChanged();
}
});
我臉上有同樣的問題,但現在用下面的代碼來解決。
listView.post(new Runnable() {
public void run() {
adpater.notifyDataSetChanged();
}
});
thnx的回覆 –
我使用BaseAdapter類,以及如何創建一個新的適配器來調用notifyDataSetChanged()?這是我的代碼BaseAdapter adapter =(BaseAdapter)list.getAdapter(); adapter.notifyDataSetChanged(); –
我編輯了我的答案。請看看它是否可以幫助你。 –