我正在尝试通过Raterofit从Get Request获取列表。但是,每当我尝试从响应中的列表值访问值时。Body..body()(成功地从数据库检索数据)时,错误始终是索引之外的,列表列表返回NULL。
。我试图用列表中的所有数据填充回收视图。但是它总是返回null,因此我的回收视图总是空的。
以下是我的服务类的代码:
@GET("products/getallproducts") Call<List<Product>> getAllProducts();
课程用于检索我的列表并填充回收即可:
public class HomeActivity extends AppCompatActivity {
List<Product> proGet = new ArrayList<Product>();
//some more codes here
//some more codes here
//some more codes here
//lastly followed by the method createDummyData()
public void createDummyData() {
Call<List<Product>> call = restServices.getService().getAllProducts();
call.enqueue(new Callback<List<Product>>() {
@Override
public void onResponse(Call<List<Product>> call, Response<List<Product>> response) {
int statusCode = response.code();
productGet = response.body();
//^^^this is where the problem is
//class used for populating one section
SectionDataModel dm = new SectionDataModel();
dm.setHeaderTitle("trend");
//class SingleItemModel is for adding single item into the section
ArrayList<SingleItemModel> singleItem = new ArrayList<SingleItemModel>();
//adding each item into the SingleItem array list
singleItem.add(new SingleItemModel(proGet.get(0).status, productList.get(0).category));
singleItem.add(new SingleItemModel(proGet.get(0).name, productList.get(0).productid));
//populate the singleItem array list into one section
dm.setAllItemsInSection(singleItem);
//populate the whole RecycleView
allSampleData.add(dm);
}
@Override
public void onFailure(Call<List<Product>> call, Throwable t) {
}
});
}
`
logcat中的错误:
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.kennethlo.kickgoo/com.example.kennethlo.kickgoo.HomeActivity}: java.lang.IndexOutOfBoundsException: Invalid index 0, size is 0
我绝望,希望有人能提供帮助。预先感谢。
首先需要检查响应大小大于0(零)。
if(productGet.size() > 0){
//Code...
}
,还检查 productList 的大小比0(零)。