J'ai un problème avec ma vue recycleur ou plus précisément avec une arrayliste secondaire utilisée pour définir une valeur dans chaque viewholder.L'arrayliste de Recyclerview lève une exception outofbounds dans android
J'ai une liste d'éléments envoyés à mon adaptateur et dans son constructeur je crée un arrayliste de la taille de cette liste. Une liste d'éléments fonctionne correctement, mais la deuxième liste d'entiers contenant tous les nombres indique les limites. Un logd rapide montre des thats pas le cas et qu'il ya une liste de 1 est là, mais chaque fois que j'essaie d'accéder à ce son outofbounds à l'index 0.
classe def
RecyclerView recyclerView;
ItemAdapter itemAdapter;
List<Item> items;
List<Boolean> itemsSelected;
List<Integer> quantities;
OnCreate
quantities = new ArrayList<>();
méthode pour créer la liste d'articles à l'adaptateur et à créer également la liste des longueurs égales de 1 de
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();
Dans le code ci-dessus les deux lignes commentées sont une autre tentative de création d'une liste de celles mais il a également eu la même erreur donc je l'ai déplacé à un tas d'autres endroits.
Je fais aussi la même chose ici dans le constructeur de l'adaptateur
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 montre le placement sortie du journal typique
ItemAdapter: quan 1
bindItem: quan [1, 1, 1, 1, 1, 1, 1, 1]
Qu'est-ce que je fais mal. La liste existe même lors de la liaison d'un item parce que si je loge toute la liste au lieu d'un seul index, toute la liste est sortie mais get (index) provoque des outofbounds.
Merci d'avoir pris le temps de regarder cela.
EDIT: Code adaptateur
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();
}
}
pouvez-vous poster votre code adaptateur – MadScientist
vient de l'ajouter pour vous – ah4444