【问题标题】:Android - Get data from many webservice (JSON) on a fragment same timeAndroid - 同时从片段上的许多 Web 服务(JSON)获取数据
【发布时间】:2017-05-04 14:27:30
【问题描述】:

我正在开发一个允许同时从多个 Web 服务 (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 个元素)。 我的问题是如何拆分数据以设置查看(见上图)?

【问题讨论】:

    标签: android json web-services android-fragments


    【解决方案1】:

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

    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 变量,以便区分。

    【讨论】:

    • 感谢您的解决方案,我会尝试的。我对此还有另一个问题。接收数据时是否需要使用异步任务?我发现数据日志在我看到它之前延迟了几秒钟。
    • @Brascelok 您不一定需要AsyncTask,但您必须在non ui-threadAsyncTask 上进行任何网络调用。
    • 我在下载json字符串时已经在函数baseDataReponsitory.getDataFromURL上使用了AsyncTask。
    • 如果我发送许多未定义、未预定义的请求(不是 2 或 3 url...),解决方案是什么
    • @Brascelok 请为此打开一个新问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多