1

我有一个列表视图,它使用不同类中的基本适配器显示来自我的数据库的多个数据。每次我删除或添加项目到我的数据库时,我都想刷新我的列表视图。

这是我的代码,但它没有刷新我的列表视图。请帮我把notifyDataSetChanged().

BaseAdapter ad = ((orderadapter)list.getAdapter());
ad.notifyDataSetChanged();

谢谢。

4

2 回答 2

1

首先,我将适配器标记为全局变量:

       public ListAdapter adapter = null;

现在我在 onCreate() 方法中初始化我的列表视图(我必须在其中放置项目)。此列表视图的布局在 xml 文件中定义:

       listView = (ListView)findViewById(R.id.myList);

现在我将所有值显示在一个数组列表中,然后用这个数组列表初始化适配器(您也可以使用任何其他数据存储技术):

       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();
            }
        });
于 2012-06-23T08:45:52.727 回答
1

我遇到了同样的问题,但现在使用下面的代码解决了。

listView.post(new Runnable() {
        public void run() {
        adpater.notifyDataSetChanged();
        }
    });
于 2012-10-11T13:59:36.177 回答