Android 关于NotifyDataSetChanged

Android 关于NotifyDataSetChanged,android,listview,android-fragments,android-adapter,Android,Listview,Android Fragments,Android Adapter,我一直在使用适配器,并尝试使用notifydatasetchanged更新它。但我面临的问题是,在我成功地更新了适配器之后,我可以在listview中看到所做的更改,然后在我从其他片段返回后,它将更改回以前的数据。我听说适配器将使用引起问题的相同数据重用convert视图,但我不知道如何解决这个问题。我已经搜索了答案,但找不到任何类似的答案,因为大多数答案都是关于声明一个新适配器的。 以下是我的代码的一部分: 1.片段中的刷新方法 public void toggleRefreshInBackg

我一直在使用适配器,并尝试使用notifydatasetchanged更新它。但我面临的问题是,在我成功地更新了适配器之后,我可以在listview中看到所做的更改,然后在我从其他片段返回后,它将更改回以前的数据。我听说适配器将使用引起问题的相同数据重用convert视图,但我不知道如何解决这个问题。我已经搜索了答案,但找不到任何类似的答案,因为大多数答案都是关于声明一个新适配器的。 以下是我的代码的一部分:

1.片段中的刷新方法

public void toggleRefreshInBackground(ArrayList<HashMap<String, Object>> list) {
    dialog_list.clear();
    dialog_list.addAll(list);
    adapter.update(list);
}
我知道这是可行的,但这不是一个好的、合适的方法,因为这是一个繁重的操作,在声明新适配器后甚至不需要使用notifyDataSetChanged


非常感谢

尝试放置
setRetainInstance(true)
在你的碎片里

如果上述操作不起作用,请尝试使用
onSaveInstanceState()
,如下所示-

在顶部声明,
可包裹状态

保存listview状态,
state=listview.onSaveInstanceState()在片段的onpause()内,或在更改片段时手动执行。
然后内部onCreateView检查
状态
是否为空。如果为空,则设置适配器/获取数据,如果不是,则设置

listview.onRestoreInstanceState(state);

另一方面,每次加载片段时,ArrayList将以空开头。所以你需要小心保存数据。

为什么不尝试使用recycler视图而不是列表视图?@Anonymous但是recyclerview和列表视图有什么区别??我仍然需要一个适配器,并在recyclerview的itView支架上进行更改,我认为这是对列表视图的一个重大增强。任何方式都可以发布您的整个适配器编号。这将很容易分析code@Anonymous我现在很好。我将在大约半小时后发布整个适配器。@Harris.C
adapter = new MyAdapter(list);
adapter.notifyDataSetChanged();
listview.onRestoreInstanceState(state);