JsonObjectRequest同步?

时间:2018-01-15 15:19:58

标签: android android-volley jsonobjectrequest

我必须向Android应用程序的API发出多个请求,我遇到以下问题: 我有一个项目列表,我必须为每个项目提出请求,以便获取一些数据并在应用程序中显示它。当我的列表大小为1时(如果我只有一个项目),该应用程序可以正常工作,但如果我有更多,我将数据混合,一个项目具有其他类似的值。

我正在使用JsonObjectRequest和Volley。我使用回调接口将请求数据发送回活动。我认为这可能是一个同步问题,但我不确定,我有点沮丧。我已经尝试了一切!

  • 请求代码:

    JsonObjectRequest request = new JsonObjectRequest(Request.Method.GET, urlMarket, null, new Response.Listener<JSONObject>() {
            @Override
            public void onResponse(JSONObject response) {
    
    
                try {
                    JSONObject singleResult;
                    singleResult = response.getJSONArray("result").getJSONObject(0);
                    coin.setHigh(singleResult.getDouble("High"));
                    coin.setLow(singleResult.getDouble("Low"));
                    coin.setLast(singleResult.getDouble("Last"));
                    coin.setVolInBtc(singleResult.getDouble("BaseVolume"));
                    coin.setBid(singleResult.getDouble("Bid"));
                    coin.setAsk(singleResult.getDouble("Ask"));
                    coin.setPrevDay(singleResult.getString("PrevDay"));
    
                    callback.onSuccess(coin);
                } catch (Exception e) {
                    e.printStackTrace();
                }
    
            }
        }, new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError error) {
                error.printStackTrace();
            }
        });
    
        requestQueue.add(request);
    

任何形式的帮助都将受到赞赏!!

PD:如果有更好的方法而不是JsonObjectRequest,请告诉我!

1 个答案:

答案 0 :(得分:1)

考虑这两个选项中的任何一个:

  1. 扩展接受id / token字段的JSONObjectRequest,该字段作为Success / Error回调的一部分返回。

  2. 在进行API调用之前,请使用final字段作为标识符。假设您正在循环中进行这些调用,则可以从匿名回调中引用此最终字段以标识特定Stock。例如,您可以使用ISIN,数据库ID或股票代码来标识响应。