J'ai un problème, à savoir j'ai un AdapterRecycler, et dans mon constructeur j'ai un objet List, mais en ce que j'ai classes Gâteau, Dîner, Boissons, Salades et tous ces objets que je dois jeter dans la liste parce que Je dois utiliser mon concepteur AdapterRecycler dans quelques endroits dans le code, mais comment faire?Comment ajouter une liste d'objets différents à un constructeur?
Par exemple:
public class RecyclerAdapter extends RecyclerView.Adapter<RecyclerAdapter.ViewHolder>{
private List<Cake> cakeList = Collections.emptyList();
private List<Dinner> dinnerList = Collections.emptyList();
private List<Drinks> drinksList = Collections.emptyList();
private List<Salads> saladsList = Collections.emptyList();
***//So how to put other lists in one constructor?***
//
*In the code below I still use methods to retrieve Names and Resources, so how do I tell the program to know which list to return? I can't duplicate a constructor with the same parameters, so is there any solution to this problem?*
public RecyclerAdapter(Activity activity, List<Cake> items) {
this.activity = activity;
this.cakeList = items;
}
*//I can't do this. So how?*
public RecyclerAdapter(Activity activity, List<Salads> items) {
this.activity = activity;
this.saladsList = items;
}
}
RecyclerAdapter.class
class RecyclerAdapter extends RecyclerView.Adapter<RecyclerAdapter.ViewHolder> {
private Activity activity;
List<Salatki> items = Collections.emptyList();
public RecyclerAdapter(Activity activity, List<Salatki> items) {
this.activity = activity;
this.items = items;
}
private Listener listener;
public static interface Listener {
public void onClick(int position);
}
public static class ViewHolder extends RecyclerView.ViewHolder {
private CardView cardView;
public ViewHolder(CardView v) {
super(v);
cardView=v;
}
}
public void setListener(Listener listener) {
this.listener = listener;
}
@Override
public CaptionedImagesAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
CardView cv = (CardView) LayoutInflater.from(parent.getContext())
.inflate(R.layout.card_captioned_image, parent, false);
return new ViewHolder(cv);
}
@Override
public void onBindViewHolder(ViewHolder holder, final int position) {
CardView cardView = holder.cardView;
ImageView imageView = (ImageView)cardView.findViewById(R.id.info_image);
Drawable drawable = cardView.getResources().getDrawable(items.get(position).getImageResourceId());
imageView.setImageDrawable(drawable);
imageView.setContentDescription(items.get(position).getName());
TextView textView = (TextView)cardView.findViewById(R.id.info_text);
textView.setText(items.get(position).getName());
cardView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(listener != null) {
listener.onClick(position);
}
}
});
}
@Override
public int getItemCount() {
return items.size();
}
}
merci pour votre réponse, mais il ne fonctionne toujours pas. Lorsque j'essaie d'utiliser l'adaptateur, il obtient la réponse que java.util.List ne peut pas être appliqué à java.util.List etc ... –
newActivity21
J'ai mis à jour répondre comment changer le constructeur de l'adaptateur. –