【发布时间】:2018-03-19 16:44:47
【问题描述】:
我有一个问题,即我有一个 AdapterRecycler,在我的构造函数中我有一个 List item,但是我有蛋糕、晚餐、饮料、沙拉和所有这些我必须放入列表的对象因为我必须在代码的几个地方使用我的 AdapterRecycler 设计器,但是怎么办?
例如:
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();
}
}
【问题讨论】:
标签: java android android-fragments arraylist android-recyclerview