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放在另一个活动上,一切正常。