Я пытаюсь заполнить RecyclerView уникальными представлениями (Buttons, TextViews, Views и т. Д.) Через ArrayList из ArrayLists of Objects.Просто знайте, что первый элемент Object на самом деле является идентификатором представления.
Проблема в том, что я не уверен, как вызвать конкретное представление, используя объект ViewHolder в методе onBindViewHolder, поскольку все представления инициализируются вArrayList.Это то, что я пробовал, но эта строка detailsViewHolder.((TextView) viewTypes.get(i)).setText("A Text");
даже синтаксически неверна.
private class DetailsAdapter extends RecyclerView.Adapter<DetailsAdapter.DetailsViewHolder> {
private ArrayList<ArrayList<Object>> viewBundle;
public DetailsAdapter(ArrayList<ArrayList<Object>> viewBundle){
this.viewBundle = viewBundle;
viewTypes = new ArrayList<>();
}
public class DetailsViewHolder extends RecyclerView.ViewHolder{
private ArrayList<View> viewTypes;
public DetailsViewHolder(View itemView){
super(itemView);
viewTypes = new ArrayList<>();
for (int i = 0; i < viewBundle.size(); i++) {
viewTypes.add(itemView.findViewById((Integer) viewBundle.get(i).get(0)));
}
}
}
@Override
public int getItemCount() {
return viewBundle.size();
}
@NonNull
@Override
public DetailsViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int i) {
View resItemView = LayoutInflater.from(parent.getContext()).inflate((Integer) viewBundle.get(i).get(1), parent, false);
DetailsViewHolder viewHolder = new DetailsViewHolder(resItemView);
return viewHolder;
}
@Override
public void onBindViewHolder(@NonNull DetailsViewHolder detailsViewHolder, int i) {
detailsViewHolder.((TextView) viewTypes.get(i)).setText("A Text");
}
}