我是一个从 Fragments 开始的 Android 初学者。我的问题如下。我有一个用于显示自定义列表视图的片段(它扩展了 SherlockListFragment)。我用一些数据服务器填充了列表视图。检索服务器数据的操作在另一个线程中执行,我有一个处理程序来管理响应。在这个处理程序中(在我的片段内),我为我的适配器恢复了数据,并像这样重新加载了我的适配器((myAdapter) fragment.getListAdapter()).dataChange();
。好吧,现在我想将列表转换为自定义网格,因为我认为这对我的应用程序来说要好得多。所以,片段不扩展 SherlockListFragment,而是 BaseFragment。因为我不再有 ListView,所以我不能不使用“getListAdapter.datachange()”。有人知道这样做的正确方法吗?提前致谢。
3 回答
为从 BaseAdapter 扩展的 gridview 制作一个 Adapter,或者使用从 BaseAdapter 扩展的 Adapter。
然后在集合的内容发生更改时在该适配器上调用 notifyDataSetChanged。
I would recommend making your changes on the Adapter, not the Grid (or list). Depending on the type of adapter you are using there are a couple different approaches.
ArrayAdapter
For an ArrayAdapter
, using the standard modification methods (add
, addAll
, clear
, remove
) should update any views.
CursorAdapter
A CursorAdapter
works in much the same way, except that you use either swapCursor
or changeCursor
to change the underlying data. That should notify all data set observers that the underlying data has changed.
All Adapters
If your observers don't get notified, usually because setNotifyOnChange
was called, you can call mAdapter.notifyDataSetChanged()
to manually update all listeners (UI views, services, etc.) that the underlying data has changed.
非常感谢您的快速回复。我尝试了你的想法,但最后我通过制作两列的行将我的旧列表转换为网格。这是保持页眉和页脚打开的最佳选择。