2013-11-14 52 views
0

我有一个listview与一些数据和2 buttons当按钮被按下时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(); 

}

+0

ü可以显示你的代码更改数据并调用notifyDatasetChanged? – Budius

回答

0

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

+0

数据更改后立即调用notifyDataSetChanged()。有很多代码可以发布。 –

0

ListView正在从Adapter读数据,当你改变它。在您的Adapter中使用​​块进行读取和编辑。这会阻止ListView在调用notifyDatasetChanged()之前读取数据。

0

如果要创建自定义列表视图中,您应该上下移动时要小心将各行会动态地膨胀,请检查您getview方法或张贴在这里..

+0

getinflateview?你主要getView? 我不重写getinflateview在我的适配器。 –

+0

只能看到它的视图。 – pavanmvn