我有一个tablayout和viewpgaer,其中有10个片段,每个片段向api发送请求,结果显示在每个片段的回收器视图中。用户可以发帖并添加到我们的服务器,在成功添加帖子后,他将被带回到他发布的相应类别。现在,我们需要刷新片段以更新回收器视图以显示新条目。在用户成功发布后,广播将发送到片段,因此执行以下代码:
BroadcastReceiver broadRefresh = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
System.out.println("recd broadcast mainact" + intent.getStringExtra("refresh"));
if (intent.getStringExtra("refresh") != null) {
getFragmentManager()
.beginTransaction()
.detach(CarsFragment.this)
.attach(CarsFragment.this)
.commit();
}
}
};
再次调用片段oncreateview和onviewcreated,但不更新recycleler视图。我尝试清除AdsList arraylist并再次调用该方法来获取数据loadnormalRv(),在这种情况下页面变为空白,如果我更改选项卡然后返回到此选项卡,然后回收器视图显示数据,或者如果我按这个页面上有一些像fitler或sort这样的按钮然后数据显示。
这是完整的片段代码link。 请帮忙。感谢。
答案 0 :(得分:0)
如果你想要你的物品从最后到第一,你可以添加:
mLayoutManager.setReverseLayout(true);
mLayoutManager.setStackFromEnd(true);
要刷新您的回收商视图,您有两种选择:
notifyDataSetChanged()
将“重绘”整个回收站视图(它将重新启动所有项目的所有动画)yourAdapter.notifyItemRangeInserted(int positionStart, int itemCount)
notifyItemChanged(int position)
来刷新特定位置的项目。这样你就可以进行有效的刷新。