我是一个以片段开头的Android初学者。我的问题如下。
我有一个片段,用于显示自定义列表视图(它扩展了SherlockListFragment)。我用一些数据服务器填充了listview。检索服务器数据的操作是在另一个线程中执行的,我有一个管理响应的处理程序。在这个处理程序(在我的片段中)我恢复了我的适配器的数据,我重新加载了我的适配器,如((myAdapter) fragment.getListAdapter()).dataChange();
。
好吧,现在我想在自定义网格中转换列表,因为我觉得它对我的应用程序来说要好得多。因此,片段不会扩展SherlockListFragment,而是扩展BaseFragment。由于我没有ListView,我不能使用“getListAdapter.datachange()”。有人知道这样做的正确方法吗?
提前谢谢。
答案 0 :(得分:3)
为从BaseAdapter扩展的gridview制作适配器,或使用从BaseAdapter扩展的适配器。
然后在集合的内容发生变化时调用该适配器上的notifyDataSetChanged。
答案 1 :(得分:1)
我建议您在适配器上进行更改,而不是网格(或列表)。根据您使用的适配器类型,有几种不同的方法。
对于ArrayAdapter
,使用标准修改方法(add
,addAll
,clear
,remove
)应更新任何视图。
CursorAdapter
的工作方式大致相同,只是您使用swapCursor
或changeCursor
来更改基础数据。这应该通知所有数据集观察者基础数据已经改变。
如果您的观察者没有收到通知,通常是因为调用setNotifyOnChange
,您可以调用mAdapter.notifyDataSetChanged()
手动更新基础数据已更改的所有侦听器(UI视图,服务等)
答案 2 :(得分:0)
非常感谢您的快速回复。我尝试了你的想法,但最后我通过制作一个两列的行来转换我的旧列表。这是保持我的页眉和页脚的最佳选择。