我有一个listview,它使用不同类中的基本适配器显示数据库中的多个数据。我想每次删除或添加项目到我的数据库时刷新我的列表视图。
这是我的代码,但它没有刷新我的列表视图。请帮助我在哪里放notifyDataSetChanged()
。
BaseAdapter ad = ((orderadapter)list.getAdapter());
ad.notifyDataSetChanged();
感谢。
答案 0 :(得分:1)
首先我将适配器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();
}
});
答案 1 :(得分:1)
我遇到了同样的问题,但现在使用下面的代码解决了。
listView.post(new Runnable() {
public void run() {
adpater.notifyDataSetChanged();
}
});