Android - 同时从片段上的许多Web服务(JSON)获取数据

时间:2017-05-04 14:27:31

标签: android json web-services android-fragments

我正在开发一个片段,允许同时从许多webservice(JSON)获取数据。让我们想象一下这张图片: demo image

  • 请求数据(此方法将调用下载json的函数并通过回调侦听器发送响应
> @Override
    public void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        BaseDataReponsitory baseDataReponsitory = new BaseDataReponsitory();
        baseDataReponsitory.getDataFromURL(url1, this);
        baseDataReponsitory.getDataFromURL(url2, this);
    }
  • 接收数据:
 @Override
    public void loadListFromURLFinish(String json) {
        ListEntity listEntity = gson.fromJson(json, ListEntity.class);
        mList.addAll(listEntity.getEntityList());
        Log.d(TAG, "loadListFromURLFinish: " + mList.size());
    }

数据日志是4和9。这是正确的(JSON 1有4个元素,JSON 2有9个元素)。 我的问题是如何分割数据以设置视图(参见上图)?

1 个答案:

答案 0 :(得分:0)

您可能希望在回调中添加辅助参数以区分呼叫,例如

public static final int CODE_1 = 1;
public static final int CODE_2 = 2;
@Override
    public void loadListFromURLFinish(String json, int requestCode) {
        if(requestCode == CODE_1) // do stuff
        else if(requestCode == CODE_2) // do other stuff
    }

你会这样称呼它

@Override
    public void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        BaseDataReponsitory baseDataReponsitory = new BaseDataReponsitory();
        baseDataReponsitory.getDataFromURL(url1, this, CODE_1);
        baseDataReponsitory.getDataFromURL(url2, this, CODE_2);
    }

当您致电回调时,您会传递CODE_X变量,以便区分。