Java Android BaseAdapter.notifyDataSetChanged()不刷新视图

Java Android BaseAdapter.notifyDataSetChanged()不刷新视图,java,android,gridview,refresh,listadapter,Java,Android,Gridview,Refresh,Listadapter,我有一个GridView,附带了一个BaseAdapter。GridView本身包含在一个ViewFlipper中 我通过调用ViewFlipper上的setDisplayedChild()方法来显示GridView,然后更新由BaseAdapter检查的数据集,最后在适配器上调用notifyDataSetChanged()。 它通常不会用新内容刷新GridView,有时也会随机刷新,因此看起来不可预测 我注意到,当我将设备旋转到新方向时,视图会自动刷新并正确加载适配器数据。当设备进入待机状态,

我有一个
GridView
,附带了一个
BaseAdapter
GridView
本身包含在一个
ViewFlipper

我通过调用
ViewFlipper
上的
setDisplayedChild()
方法来显示
GridView
,然后更新由
BaseAdapter
检查的数据集,最后在适配器上调用
notifyDataSetChanged()
。 它通常不会用新内容刷新
GridView
,有时也会随机刷新,因此看起来不可预测

我注意到,当我将设备旋转到新方向时,视图会自动刷新并正确加载适配器数据。当设备进入待机状态,我解锁它时,也会发生同样的情况,视图会神奇地用新数据刷新

我尝试在
UIThread
中调用
notifyDataSetChanged()
,我尝试通过调用
forceLayout()
requestLayout()
invalidate()
invalidateChildren()
等来强制视图刷新,但没有任何更改

即使我从按钮调用
notifyDataSetChanged()
,也不会发生任何事情,只需旋转设备或锁定并解锁设备即可刷新视图

我正在开发一款搭载安卓3.2的华硕平板电脑

有人能帮我或给我一些提示吗


多谢各位

如果您的视图没有使用上述所有方法刷新,那么您必须重新绘制网格视图,或者您可以在设置网格适配器时做一件事,将该行放在Resume方法上,并在对数据进行更改后调用onResume()

重新绘制GridView会导致黑屏(我用同一个适配器创建了另一个GridView实例,删除了旧的,添加了新的,但新的没有显示为黑色。我尝试了恢复方法,但没有结果。解决方法:问题是ViewFlipper。我将GridView放在另一个活动上,一切正常。在放置一些日志后,我注意到当视图不显示时刷新自身时,适配器方法getCount()、getView()等根本不会被调用。但当我“旋转”设备或锁定/解锁屏幕时,它们会被调用,视图会刷新。解决方法:问题是ViewFlipper。我将GridView放在另一个活动上,一切正常。