我的活动包含一个 ListView。当我打开一个对话框(继承自 Dialog 的自定义对话框)时,适配器的 getView() 会被系统地调用,因此必须在某处调用 notifyDataSetChanged。我不希望每次关闭对话框时都刷新我的列表。我怎样才能防止这种情况?
3 回答
我有同样的问题,并认为我无能为力。
当它在 ListView 中可见时,我正在向我的一个视图添加一个 onClick。当时我不知道,但是视图的这种修改(在 getView 之后)导致 ListView 在显示或关闭对话框时在我的适配器上调用 getView()。(大概是为了视图测量)
由于我无法轻松地重新添加 onClick,因此我更改了代码以在 getView() 中添加 onClick 并且之后没有修改视图。
事实证明,现在因为我根本没有修改我的视图(在调用原始 getView() 之后),所以 getView() 不会在 Dialog show 上调用或关闭。
不确定这是否也解决了您的问题,但它可能对其他人有所帮助。
对我来说这听起来像是一个生命周期问题......就像当你从你的列表活动开始一个新活动,然后回到你的列表活动时......如果你的列表创建代码在 onResume 中,它将重新运行。
并不是说这真的是这里的问题,但没有看到你的代码,这是我能做出的最好的猜测。
如果您不想设置通知数据集更改,那么您可以将数据临时保存在任何对象中,当您想要更新它时,只需将该数据保存到您传入列表视图的数组列表或字符串数组中,然后调用 notifydatasetchanged这样它只会在你想要的时候更新。如果您发布一些代码会更好,这样我们就可以确切地知道您想要做什么..