如果从数据项中删除项目,则android notifyDataSetChanged无效

时间:2015-06-09 12:27:25

标签: android listview baseadapter notifydatasetchanged

我正在开发一个Android应用程序,其中我使用一个基本适配器并以列表形式显示数据。现在发生了什么如果我从列表中删除任何对象,如果我调用notifyDataSetChanged,它不能按预期工作。我试着这样做。

@Override
protected void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);



    shareDataList = getData();
    shareListAdapter = new SharedHistoryListAdapter(this, shareDataList);
    sharedList.setAdapter(shareListAdapter);

}

@Override
protected void onResume()
{

     super.onResume();

    // after deleting data it is coming inside onresume ... 

    shareDataList = getData();

    shareListAdapter.notifyDataSetChanged();

}

我检查了我的活动内部和适配器内部的数据大小。所以在活动中它显示计数符合预期,但在适配器内它没有显示更新计数。我错过了什么吗?需要一些帮助。

2 个答案:

答案 0 :(得分:6)

将列表设置为适配器后,无法更改列表的引用。所以删除行

 shareDataList = getData(); 

并替换为

    shareDataList.clear();
    shareDataList.addAll(getData());

现在调用shareListAdapter.notifyDataSetChanged();

答案 1 :(得分:1)

我认为,在getData()方法中每次获取新的ArrayList对象。 你应该简单地打电话

shareListAdapter.notifyDataSetChanged();

它将完美地运作