如何强制我的GridView适配器重新加载?

时间:2013-08-07 13:11:02

标签: android gridview fragment handler adapter

我是一个以片段开头的Android初学者。我的问题如下。 我有一个片段,用于显示自定义列表视图(它扩展了SherlockListFragment)。我用一些数据服务器填充了listview。检索服务器数据的操作是在另一个线程中执行的,我有一个管理响应的处理程序。在这个处理程序(在我的片段中)我恢复了我的适配器的数据,我重新加载了我的适配器,如((myAdapter) fragment.getListAdapter()).dataChange();。 好吧,现在我想在自定义网格中转换列表,因为我觉得它对我的应用程序来说要好得多。因此,片段不会扩展SherlockListFragment,而是扩展BaseFragment。由于我没有ListView,我不能使用“getListAdapter.datachange()”。有人知道这样做的正确方法吗? 提前谢谢。

3 个答案:

答案 0 :(得分:3)

为从BaseAdapter扩展的gridview制作适配器,或使用从BaseAdapter扩展的适配器。

然后在集合的内容发生变化时调用该适配器上的notifyDataSetChanged。

Small example of adapter and grid

答案 1 :(得分:1)

我建议您在适配器上进行更改,而不是网格(或列表)。根据您使用的适配器类型,有几种不同的方法。

ArrayAdapter

对于ArrayAdapter,使用标准修改方法(addaddAllclearremove)应更新任何视图。

的CursorAdapter

CursorAdapter的工作方式大致相同,只是您使用swapCursorchangeCursor来更改基础数据。这应该通知所有数据集观察者基础数据已经改变。

所有适配器

如果您的观察者没有收到通知,通常是因为调用setNotifyOnChange,您可以调用mAdapter.notifyDataSetChanged()手动更新基础数据已更改的所有侦听器(UI视图,服务等)

答案 2 :(得分:0)

非常感谢您的快速回复。我尝试了你的想法,但最后我通过制作一个两列的行来转换我的旧列表。这是保持我的页眉和页脚的最佳选择。