我目前有3个片段(选项卡),并且当前正在使用viewpager。我有一个listview为每个片段,并且我想通知另一个单击视图后发生的事情。我尝试在mainactivity上的setOnPageChangeListener()上使用notifyDataSetChanged()。问题是,当我更改标签页时,我可以看到插入的数据。由于更改标签后发生更改。来自不同片段的notifyDataSetChanged()
回答
您可以考虑使用广播接收器来通知数据集更改。
在您的接收片段
public static final string RADIO_DATASET_CHANGED = "com.yourapp.app.RADIO_DATASET_CHANGED";
private Radio radio;
在onCreate方法:
radio = new Radio();
接收片段内的无线电类:
private class Radio extends BroadcastReceiver{
@Override
public void onReceive(Context context, Intent intent) {
if (intent.getAction().equals(RADIO_DATASET_CHANGED)){
//Notify dataset changed here
}
}
在上恢复该接收片段方法:
@Override
protected void onResume() {
super.onResume();
//using intent filter just in case you would like to listen for more transmissions
IntentFilter filter = new IntentFilter();
filter.addAction(RADIO_DATASET_CHANGED);
getActivity().getApplicationContext().registerReceiver(radio, filter);
}
确保我们注销接收器的的onDestroy方法
@Override
protected void onDestroy() {
super.onDestroy();
try {
getActivity().getApplicationContext().unregisterReceiver(radio);
}catch (Exception e){
//Cannot unregister receiver
}
}
片段传输的数据集改变
然后从片段被通知datasetchange只是做:
Intent intent = new Intent(ReceivingFragment.RADIO_DATASET_CHANGED);
getActivity().getApplicationContext().sendBroadcast(intent);
好吧,它正在努力! :D如果你能看见我,我现在正在疯狂。非常感谢。 :D我刚刚注意到notifydatasetchanged()一直在导致我的标签刷卡变慢。当我尝试使用notifydatasetchaned时,它不起作用,而是我再次打电话给我的列表。有效。比以前更平滑。 :) –
很高兴为您服务! –
只是好奇吗? unregisteredReceiver()如何工作?我似乎无法称之为? –
在你的MainActivity中,试试这段代码。它可能有帮助。
@Override
public void onPageSelected(int position) {
// TODO Auto-generated method stub
if (position ==0)
viewPager.getAdapter().notifyDataSetChanged();
if (position == 1)
viewPager.getAdapter().notifyDataSetChanged();
if (position == 2)
viewPager.getAdapter().notifyDataSetChanged();
}
我认为这是@Renz现在正在做的 – maciekjanusz
这就是我把它放在哪里。在setonpagechangelistener的onpages选中。 –
- 1. 来自MainActivity的片段ListView适配器notifyDataSetChanged()
- 2. 只扫描来自片段的图像不完整片段
- 3. 来自Python的HTML片段
- 4. 倾听来自不同的Android碎片
- 5. Android:AlertDialog在片段中看起来不同
- 6. 获取来自父代的片段中不同字段的值活动
- 7. 在以下html代码片段中添加来自不同网站的图片
- 8. RecyclerView里面viewpager里面的片段notifydatasetchanged不工作
- 9. Android调用来自AsyncTask的notifyDataSetChanged
- 10. 显示来自片段对话框的片段
- 11. Android:来自同一个XML文件的多个片段
- 12. 来自EditText(来自GridView)的片段中的用户输入不是持久的
- 13. 来自片段的调用活动
- 14. Android设置来自片段的报警
- 15. Django - 重复使用来自多个不同模板的HTML片段
- 16. 清除ArrayList并在片段的适配器ListView中执行notifyDataSetChanged
- 17. 片段幻灯片转换不同步
- 18. 不能在不同的片段类
- 19. invalidateOptionsMenu犯规获得来自片段
- 20. 来自列表视图的数据不能传递到片段
- 21. 在viewPager的片段中,recyclerView适配器notifyDataSetChanged不能在第一时间工作
- 22. 来自不同大小的网址的Android图片
- 23. 来自不同URL的不同登录
- 24. 片段回来按,加载回片段
- 25. 在其他列表片段/选项卡上调用notifyDataSetChanged()
- 26. [完成] notifyDataSetChanged()不会自动更新ListActivity
- 27. 自定义适配器notifyDataSetChanged不工作
- 28. 同步获取图片(来自Uri)
- 29. 获取来自不同模型的精选图片
- 30. 隐藏BottomNavigationView从不同的片段
由于您正在使用视图寻呼机,因此它有一个选择选项需要在当前片段的两侧加载多少片段,比如说1.So 1片段将被加载到当前片段的任一侧,因此如果您试图引用除这些片段之外的任何片段,那么可能性不会是什么发生或者它会崩溃,并告诉你没有这样的视图或适配器存在,这不是一个答案,而是当你得到它时要注意的东西,我也需要同样的东西。 –
感谢您的注意。看到数据在更改制表符之后会变得非常烦人。 XD –