Java 如何启用集合notifyDataChanged?

Java 如何启用集合notifyDataChanged?,java,android,android-ui,Java,Android,Android Ui,我有一个片段,其中有一个带有BaseAdapter的ListView。 然后我有一个弹出菜单,在这里我选择了一个选项,它将项目添加到集合中。 集合中的数据应显示在列表中,但不显示。 我需要添加adapter.notifyDataChanged()来更新视图 问题是我可能无法从不同的类访问适配器。如何启用自动ui更新 另外,我试图从UI线程添加数据,但仍然没有任何结果 getActivity().runOnUiThread(new Runnable() {

我有一个片段,其中有一个带有BaseAdapter的ListView。 然后我有一个弹出菜单,在这里我选择了一个选项,它将项目添加到集合中。 集合中的数据应显示在列表中,但不显示。 我需要添加adapter.notifyDataChanged()来更新视图

问题是我可能无法从不同的类访问适配器。如何启用自动ui更新

另外,我试图从UI线程添加数据,但仍然没有任何结果

                    getActivity().runOnUiThread(new Runnable() {

                        public void run() {
                            GlobalData.groupTable.put(newGroup.getId(), newGroup);

                        }
                    });

事实并非如此。将适配器作为参数传递给需要调用它的类。或者,您可以编写自己的集合类来重写add方法来调用适配器,但即使这样,您也必须将适配器传递给新的集合类

问题是我可能无法从不同的类访问适配器


创建自定义回调以更新适配器。是来自《开发者指南》。

这是否意味着对于本机集合,我无法让它自动更新ui?否。当变量发生变化时,无法自动得到通知。必须显式调用notifyDataSetChanged。您可以创建一个相当容易的集合类(只需在调用super.add和super.remove之后重写add和remove来调用它)。不是吗?我认为DataSetObserver实现了一个回调,它指示数据集中的更改。不是吗?集合不是被监视的数据集,适配器是。(奇怪,对吧?)看看ArrayAdapter的方法。您会注意到,即使在这里,您也必须调用
notifyDataSetChanged()
以查看ListView、微调器或任何其他视图中的更改。