Android BaseAdapter.notifyDataSetChanged()不刷新视图

时间:2012-01-18 11:30:45

标签: java android gridview refresh listadapter

我有一个GridView附加BaseAdapterGridView本身包含在ViewFlipper中。

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

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

我试图调用notifyDataSetChanged()中的UIThread,我试图通过调用forceLayout()requestLayout()invalidate(),{{来强制查看视图1}}等等,但没有任何变化。

即使我从按钮调用invalidateChildren()也没有任何反应,只需旋转设备或锁定并解锁它就会刷新视图。

我正在开发使用Android 3.2的华硕平板电脑。

有人可以帮助我或给我一些提示吗?

非常感谢!

1 个答案:

答案 0 :(得分:0)

如果您的View不是通过使用上述所有内容进行刷新,那么您必须重新绘制网格视图,或者在设置网格适配器时可以执行一项操作,将这些行放在Resume方法上,并在进行更改后调用onResume()你的数据。