我的适配器如何知道 notifydatasetchanged

How does my Adapter know about notifydatasetchanged

我有一个 ListView,由自定义适配器填充:

public class myAdapter implements ListAdapter

这个基本部分正在运行 - 视图是使用正确的数据创建的,一切都很好。

列表中的数据偶尔会发生变化,我需要能够在发生变化时刷新整个列表。我正在努力研究如何做到这一点。

BaseAdapter 提供 notifyDataSetChanged(),所以我可以让我的 class 扩展 BaseAdapter:

public class myAdapter extends BaseAdapter implements ListAdapter

但只是在我的对象上调用 notifyDataSetChanged() 确实...好吧,据我所知,什么也没有。当然 ListView 不会更新并且 myAdapter.getView() 不会被调用。

ListView 上调用 invalidate() 似乎也没有效果。

我的适配器似乎需要了解数据更改的可能性,但我不明白如何将它与 BaseAdapter and/or ListAdapter 联系起来。

How does my Adapter know about notifydatasetchanged

钩子BaseAdapter下实现Observer模式,并notifyDataSetChanged通知观察者。

如果您 implements ListAdapter 您必须提供您自己的 registerDataObserunregisterDataObserver 版本。如果你将它们留空,notifyDatasetChanged 什么都不做。另一方面 BaseAdapter implements ListeAdapter 并且已经提供了上述方法的实现。