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

这是我的代码,但没有刷新我的列表视图。请帮助我将notifyDataSetChanged()放在哪里。

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


谢谢。

最佳答案

首先,我将适配器贴花作为全局变量:

       public ListAdapter adapter = null;


现在,我在onCreate()方法中初始化listview(必须在其中放置项目)。此列表视图的布局在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();
            }
        });

关于android - notifyDataSetChanged()对我不起作用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11151930/

10-10 08:31