【问题标题】:Add JSON Objects to an array inside Retrofit call function将 JSON 对象添加到 Retrofit 调用函数中的数组
【发布时间】:2018-09-18 08:51:29
【问题描述】:

我正在使用 Android Studio 我需要从 http://mindicador.cl/api 的 API 中检索所有数据,这里我需要获取“uf”、“dolar”、“euro”和“utm”四个对象。实际上我已经可以检索它,当我想将它添加到数组时出现问题,因为将来我想处理这个数组以便在 RecyclerView 上显示它们。

public class MainActivity extends AppCompatActivity {

    private List<IEconomicoObject> iEconomicoObjects;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        iEconomicoObjects = new ArrayList<>();

        Retrofit retrofit = new Retrofit.Builder()
                .baseUrl(MiIndicadorAPI.BASE_URL)
                .addConverterFactory(GsonConverterFactory.create())
                .build();

        MiIndicadorAPI api = retrofit.create(MiIndicadorAPI.class);

        final Call<IEconomicoAPI> iEconomicoAPICall = api.getAPI();
        iEconomicoAPICall.enqueue(new Callback<IEconomicoAPI>() {
            @Override
            public void onResponse(Call<IEconomicoAPI> call, Response<IEconomicoAPI> response) {
                iEconomicoObjects.add(response.body().getUf());
                iEconomicoObjects.add(response.body().getUtm());
                iEconomicoObjects.add(response.body().getEuro());
                iEconomicoObjects.add(response.body().getDolar());
            }

            @Override
            public void onFailure(Call<IEconomicoAPI> call, Throwable t) {
                Log.e("onFailure", "" + t.getMessage());
            }
        });

        // here is the problem, the list is empty and should be show the data added it previously
        if (!iEconomicoObjects.isEmpty()) {
            for (IEconomicoObject o: iEconomicoObjects) {
                Log.e("info", "nombre: " + o.getNombre());
            }
        } else {
            Log.e("info", "the list is empty");
        }
    }
}

【问题讨论】:

    标签: android json android-studio retrofit retrofit2


    【解决方案1】:

    列表将在您尝试阅读时显示为空。由于改造返回导致与 UIThread 并行调用的回调,因此您应该阅读回调内的列表。

    【讨论】:

    • 但是有类似 onPostExecute 的东西吗?我的意思是调用回调后的一些方法?
    • 该方法是异步任务中的回调..您没有使用它。你正在使用改造的回调。
    猜你喜欢
    • 1970-01-01
    • 2018-07-20
    • 2021-01-13
    • 1970-01-01
    • 2015-09-03
    • 2020-02-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多