我有一个带适配器的ListView。我的ListViewItem上只有一个ImageView对象。当我更改ListViewItems中位图的内容时,我总是要调用adapter.notifyDataSetChanged()
。否则,位图不会刷新。我已经在Listview中的每个ImageView上尝试了myImageView.Invalidate()
,但这没有用。
更新ListViews的一些代码:
runOnUiThread(new Runnable()
{
@Override
public void run()
{
Canvas myCanvas = rowItems.get(0).getCanvas();
// draw on canvas
adapter.notifyDataSetChanged();
}
});
现在我的问题:是否有替代刷新ListViews(在我的情况下是位图的内容)或者我是否必须调用notifyDataSetChagend?谢谢!
答案 0 :(得分:2)
适配器需要知道数据已更改才能刷新自身,因此必须这样做。问题是为什么你首先需要一个替代品!
但是,如果您需要它更高效,您可以使用RecyclerView.Adapter notifyItemChanged (int position)通知已更改的特定项目而不是整个项目,如果您仍在使用,则无法使用此项目的ListView。