列表移动时更改列表视图数据

时间:2013-11-14 13:14:00

标签: android listview

当按下按钮时listview更改了数据,我有一个buttons包含一些数据和2 listview。要在点击button时获取此信息,我会更改arraylist中的值并致电notifyDatasetChanged。所有这些都很好。但是,当我用一根手指移动列表并单击按钮时,应用程序崩溃并显示错误The content of the adapter has changed but ListView did not receive a notification。数据从UI线程本身更改。当列表移动并按下按钮时会发生这种情况。有什么方法可以阻止这种情况吗?

此代码按钮单击。这里arrlist是arraylist,dailydata()用于将数据添加到数组列表中。

public void onClick(View v) {
arrlist.clear();
adapter.notifyDataSetChanged();
dailydata();
adapter.notifyDataSetChanged();

}

3 个答案:

答案 0 :(得分:0)

在通知适配器之前,您可能正在更改内容。或者,您可以尝试在ListView滚动时禁用单击按钮。分享您的代码,以便我们找到确切的错误。

答案 1 :(得分:0)

ListView正在更改Adapter时读取数据。使用synchronized内的Adapter块进行阅读和编辑。这会阻止ListView在调用notifyDatasetChanged()之前读取数据。

答案 2 :(得分:0)

如果您要创建自定义列表视图,在上下移动时每行都会动态膨胀时请务必小心,请检查getview方法或在此处发布..