更新 ListView 时是否真的需要 notifyDataSetChanged()

Is notifyDataSetChanged() really necessary when updating ListView

我有一个带适配器的 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();
         }               
    });

现在我的问题是:是否有替代方法来刷新 ListView(在我的例子中是位图的内容),或者我是否必须调用 notifyDataSetChagend?谢谢!

适配器需要知道数据已更改才能刷新自身,因此有必要这样做。问题是为什么您首先需要一个替代方案!

但是,如果您需要它提高性能,您可以使用 RecyclerView.Adapter's notifyItemChanged (int position) 通知特定项目已更改而不是整个项目,如果您仍在使用 ListView,则此功能不可用。