我正在使用Material Tab,我使用了3个标签。
标签A [产品列表]
具有从远程服务器填充的回收列表和数据。例如,它有产品标题,图像和喜欢的图像
标签B [收藏产品列表]
Tab C [联系我们]
我尝试实施的内容,一旦用户选择收藏夹按钮(添加到收藏夹),特定列表项目会显示在TAB_B [收藏产品列表]
我使用了共享首选项并将数据保存为Gson格式。我已经按照本教程
了http://androidopentutorials.com/android-how-to-store-list-of-values-in-sharedpreferences/
问题是,一旦我添加项目并从产品列表中删除项目[标签A]表现良好,它就不会显示在标签B [收藏产品列表]中。一旦我重新启动应用程序,收藏夹产品列表将显示在选项卡b。我使用了一些像广播接收器这样的技巧,但它没有正常工作。
我使用it.neokree:MaterialTabs:0.11
库来填充标签
以下是我使用的一些代码。
请指导我,我做错了。
答案 0 :(得分:1)
compile 'org.greenrobot:eventbus:3.0.0
'在每个片段中添加onCreate()
EventBus.getDefault().register(this);
在每个片段中添加onDestroyView
EventBus.getDefault().unregister(this);
为Event创建Java类 例如:
public class EventUpdateList {
private boolean listNeedUpdate= true;
public EventUpdateList (boolean listNeedUpdate) {
this.listNeedUpdate= listNeedUpdate;
}
public boolean isListNeedUpdate() {
return listNeedUpdate;
}
}
在所有片段中添加
@Subscribe(threadMode = Main)
public void onListRefresh(EventUpdatelist eventUpdateList)
{
if (eventUpdateList.isNeedListUpdate)
{
// refresh your list
}
}
在您的活动中添加
EventBus.getDefault.post(new EventUpdateList(true));
所有3个片段都获取有关事件的信息以刷新列表。 您甚至可以使用完整列表发布事件来刷新而不是此布尔值并获得3个片段。
答案 1 :(得分:0)
由于您使用的lib基本上使用ViewPager来管理给定的Fragment作为Tab,因此Fragment的setUserVisibleHint方法应该是每次加载时都可以更新标签内容的地方。 / p>
public void setUserVisibleHint(boolean isVisibleToUser) {
super.setUserVisibleHint(isVisibleToUser);
if (isVisibleToUser) {
// Do stuffs that you want to do every time this fragment loads
} else {
}
}