gpt4 book ai didi

Android Studio Retrofit OnResponse 问题

转载 作者:行者123 更新时间:2023-11-30 05:02:20 26 4
gpt4 key购买 nike

我正在处理 mvvm 设计,但 OnResponse 没有将数据保存在列表中。返回空列表数组。我无法达到有值(value)的列表。我真的不知道错误的代码在哪里。这是代码。请帮忙。

public class RetroClass {

private static final String BASE_URL="--";

private List<ProductModel> productList=new ArrayList<>();

public static Retrofit getRetroInstance(){

return new Retrofit.Builder().baseUrl(BASE_URL).addConverterFactory(GsonConverterFactory.create()).build();
}

public static APIService getAPIService(){

return getRetroInstance().create(APIService.class);
}

public List<ProductModel> getProducts(){

APIService apiService=getAPIService();

apiService.getProducts().enqueue(new Callback<List<ProductModel>>() {
@Override
public void onResponse(Call<List<ProductModel>> call, Response<List<ProductModel>> response) {

productList.addAll(response.body());
for (int k=0;k<productList.size();k++) {
Log.d("onResponse: ", productList.get(k).getOrderName());//im getting the value here
}
}

@Override
public void onFailure(Call<List<ProductModel>> call, Throwable t) {
Log.d("onFailure: ",t.getMessage());

}
});
return productList;//but this is empty

}

}

这是我的 View 模型。

public class ProductsVievModal extends ViewModel {

List<ProductModel> productList;
LiveData<List<ProductModel>> liveproductList;
RetroClass apiClass=new RetroClass();

public List<ProductModel> getProducts(){

productList=apiClass.getProducts();
for (int k=0;k<productList.size();k++) {
Log.d("onResponse: ", productList.get(k).getOrderName());
}
return productList;
}

}

最佳答案

.enqueue 异步发送请求并通知其响应的回调。它是异步的。 onResponse() 必须在返回产品列表之前完成。

我怀疑 return productList; 是在 onResponse() 返回其值之前执行的。您可以通过在 return productList; 之前放一个日志来检查先执行哪一行吗?

关于Android Studio Retrofit OnResponse 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58045928/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com