中拋出異常異常我的回收視圖存在問題,或者更準確地說是使用次級ArrayList用於在每個視圖中設置值。Recyclerview ArrayList在Android
我有一個項目列表發送到我的適配器,並在其構造函數中創建列表的大小列表。項目的數組列表正常工作,但包含所有數字的整數列表中的第二個數組列表說明了outofbounds。快速的logD顯示,多數民衆贊成並非如此,有1的有名單,但每次我試圖在索引0
級高清
RecyclerView recyclerView;
ItemAdapter itemAdapter;
List<Item> items;
List<Boolean> itemsSelected;
List<Integer> quantities;
的OnCreate
quantities = new ArrayList<>();
訪問此其outofbounds
創建適配器的項目列表的方法並且還創建等於1的列表的列表
for (int i = 0; i <categories.size() ; i++) {
long length = dataSnapshot.child(categories.get(i)).getChildrenCount();
Iterator<DataSnapshot> toAdd= dataSnapshot.child(categories.get(i)).getChildren().iterator(); // this returns all the items in each category
for (int j = 0; j <length ; j++) {
DataSnapshot newData = toAdd.next();
items.add(newData.getValue(Item.class));
//quantities.add(Integer.valueOf(1));
//itemsSelected.add(Boolean.valueOf(false));
Log.d(TAG, "onDataChange: debug: "+ newData.toString());
}
}
for (int i = 0; i < items.size() ; i++) {
quantities.add(i,Integer.valueOf(1));
itemsSelected.add(i,Boolean.valueOf(false));
}
itemAdapter = new ItemAdapter(items);
itemAdapter.notifyDataSetChanged();
在上面的代碼中,兩行註釋掉了另一個嘗試創建一個列表,但它也有相同的錯誤,所以我將它移動到一堆其他地方。
我也是在這裏做的適配器構造
public ItemAdapter(List<Item> items){
this.items = items;
for (int i = 0; i < items.size() ; i++) {
quantities.add(i,Integer.valueOf(1));
itemsSelected.add(i,Boolean.valueOf(false));
Log.d(TAG, "ItemAdapter: quan "+ quantities.get(i));
Log.d(TAG, "ItemAdapter: bool "+ itemsSelected.get(i));
}
相同LOGD顯示位置 典型日誌輸出
ItemAdapter: quan 1
bindItem: quan [1, 1, 1, 1, 1, 1, 1, 1]
我在做什麼錯。該列表即使在綁定項目時也存在,因爲如果我登錄整個列表而不是單個索引,則會輸出整個列表,但get(index)會導致outofbounds。
感謝您花時間看這個。
編輯:適配器代碼
private class ItemAdapter extends RecyclerView.Adapter<ItemHolder>{
List<Item> items;
Item item;
public ItemAdapter(List<Item> items){
this.items = items;
for (int i = 0; i < items.size() ; i++) {
quantities.add(i,Integer.valueOf(1));
itemsSelected.add(i,Boolean.valueOf(false));
Log.d(TAG, "ItemAdapter: quan "+ quantities.get(i));
Log.d(TAG, "ItemAdapter: bool "+ itemsSelected.get(i));
}
}
@Override
public ItemHolder onCreateViewHolder(ViewGroup parent, int viewType) {
LayoutInflater layoutInflater = LayoutInflater.from(getActivity());
View view= layoutInflater.inflate(R.layout.singleitem,parent,false);
return new ItemHolder(view);
}
@Override
public void onBindViewHolder(ItemHolder holder, int position) {
item = items.get(position);
holder.bindItem(item,position);
}
@Override
public int getItemCount() {
return items.size();
}
}
你可以發佈你的適配器代碼 – MadScientist
只是爲你添加它 – ah4444