在ViewPager中使用EventBus时获取混合数据

VCODE

当成功发出http请求时,我正在使用EventBus将结果发布到片段。当有一个订户和一个发布者关系时,这很好用。

但是,在我的应用程序中,我有一个使用ViewPager带有选项卡的屏幕并且由于页面非常相似,因此我使用相同的片段,并使用与每个选项卡相对应的不同参数来下载数据。

片段看起来与以下几行相似:

public class MyFragment extends Fragment{
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);    
        EventBus.getDefault().register(this);
    }

    public void onEvent(ServerResponse response) {
        updateUi(response);
    }

    @Override
    public void onDestroy() {
        super.onDestroy();
        EventBus.getDefault().unregister(this);
    }
}

您可能已经猜到接收数据时会发生什么。

由于有许多具有相同签名的订户,等待a ServerResponse,因此响应不会转到相应的选项卡,但是会在每个片段中接收并显示相同的响应,并且会混合数据。

你有什么想法要解决吗?

道格拉斯·马克斯

嘿!同样的问题在这里,但我有解决方案。

问题是您有很多Fragments(来自同一对象的实例),并且所有实例都在侦听同一事件,因此发布事件时,所有实例都将更新。

发布事件时,请尝试发送位置,并在实例化时Fragment需要存储页面适配器位置。之后,只需检查事件是否与您的位置相同即可Fragment

例如:

public static QuestionFragment newInstance(int position) {
    QuestionFragment fragment = new QuestionFragment();
    Bundle args = new Bundle();
    args.putInt(ARG_POSITION, position);
    fragment.setArguments(args);
    return fragment;
}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    vMain = inflater.inflate(R.layout.fragment_question, container, false);
    EventBus.getDefault().post(new GetQuestionEvent(mPosition));
    return vMain;
}

public void onEvent(GetQuestionEvent e) {
    if (e.getQuestion().getPosition() == mPosition) {
        TextView tvPostion = (TextView) vMain.findViewById(R.id.tv_position);
        tvPostion.setText("" + e.getQuestion().getPosition());
    }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

可以在MongoDB中使用混合数据模型吗?

来自分类Dev

在MATLAB中使用混合数据打开.gz文件

来自分类Dev

我应该在猫鼬模式中使用混合数据还是单个数据?

来自分类Dev

vue cli axios在获取请求时混合数组索引

来自分类Dev

为什么在读取混合数据时ifstream失败?

来自分类Dev

使用混合数据清洗或引用熊猫数据框

来自分类Dev

使用混合数据和添加的列进行透视

来自分类Dev

Excel排序“混合数据”

来自分类Dev

在MVC视图中使用Model.GroupBy时如何显示聚合数据?

来自分类Dev

从.txt文件获取混合数值

来自分类Dev

从.txt文件获取混合数值

来自分类Dev

Excel VBA在混合数据时检查单元格是否包含字符串

来自分类Dev

Spring Batch:转换为多线程时出现问题(混合数据)

来自分类Dev

用混合数据联接多个表

来自分类Dev

聚类大型混合数据

来自分类Dev

删除变量中的混合数据

来自分类Dev

jqPlot Pie Renderer混合数据标签

来自分类Dev

Python混合数据结构

来自分类Dev

RESTful服务和混合数据响应

来自分类Dev

什么格式存储大量混合数据

来自分类Dev

聚合数据并仍在rethinkDB中使用changefeed

来自分类Dev

在pandas中使用groupby对聚合数据进行计算

来自分类Dev

什么时候在JavaScript对象中使用数组(或混合数组)?

来自分类Dev

使用aeson解析JSON以获取复合数据类型

来自分类Dev

使用aeson解析JSON以获取复合数据类型

来自分类Dev

如何使用fscanf函数导入字符串和小数的混合数据?

来自分类Dev

使用Boost.Spirit解析具有混合数据类型的OBJ文件?

来自分类Dev

熊猫:使用混合数据类型对多级列进行排序

来自分类Dev

如何使用fscanf函数导入字符串和小数的混合数据?

Related 相关文章

热门标签

归档