我有一个以一定间隔运行的同步服务,并根据服务器数据更新客户端。现在,如果用户对服务器数据进行了任何更改,例如从列表视图中删除项目,则该更改应反映到相应的视图片段。
问题是 - 我在片段中得到了更改,但这不是自动的。这意味着我必须来回走回我的相关片段才能看到我的更新。
然后我应该如何从后台运行的同步服务得到通知,我的相应片段视图现在已经更改,以便我可以调用我的刷新功能 片段视图?
注意:我不想在一定时间间隔内反复刷新片段。我只想要 我的片段视图发生变化时刷新。
更新:
我得到的适配器计数给出了片段中列表视图项的计数。 因此,每当我获得更改的计数时,我需要更新/刷新/重新加载片段。所以我的计数将作为更改片段视图的触发器。
类似于:
if adapter.getCount() gets changed //how to get notified about this change
{
FragmentTransaction transactionOld =getActivity().getSupportFragmentManager().beginTransaction();
transactionOld.detach(this).commit();
FragmentTransaction transactionNew = getActivity().getSupportFragmentManager().beginTransaction();
transactionNew.attach(this).commit();
}
答案 0 :(得分:1)
您应该在Fragment
中使用BroadcastReceiver
,注册onStart()
并在onStop()
取消注册。
当您的SyncServices
完成并更新了数据后,只需使用sendBroadcast()
发送广播,即可通知您的Fragment
是否可见。
当然,您必须为Broadcast
设置自定义操作,例如com.myapp.ACTION_SYNC
,但您会在阅读docs时了解到这一点。