Я пытаюсь отобразить список аналогичных предметов в виде переработчика в Android. У меня много разных предметов. Могу ли я использовать операторы switch, чтобы использовать один и тот же класс адаптера для разных представлений элементов. Если нет, то что может быть самым эффективным методом в этом случае. Эффективнее ли использовать отдельные адаптеры для всех типов элементов, чем операторы switch?
public class ImageAdapter extends RecyclerView.Adapter<ImageAdapter.ImageViewHolder> {
private Context mContext;
private List<UploadData> mUploads;
private int index;
public ImageAdapter(Context mContext, List<UploadData> mUploads, int index) {
this.mContext = mContext;
this.mUploads = mUploads;
this.index = index;
}
@NonNull
@Override
public ImageViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
View v;
switch (index) {
case 0:
v = LayoutInflater.from(mContext).inflate(R.layout.single_item_view_book, viewGroup, false);
break;
case 1:
v = LayoutInflater.from(mContext).inflate(R.layout.labcoat_display_fragment, viewGroup, false);
default:
v = LayoutInflater.from(mContext).inflate(R.layout.single_item_view_book, viewGroup, false);
break;
}
return new ImageViewHolder(v);
}
@SuppressLint("SetTextI18n")
@Override
public void onBindViewHolder(@NonNull ImageViewHolder viewHolder, int i) {
UploadData uploadCurrent = mUploads.get(i);
Picasso.get().load(uploadCurrent.getUrlList().get(0)).fit().centerInside().into(viewHolder.mimageView);
viewHolder.mPrice.setText("\u20B9" + " " + uploadCurrent.getItemDetail().get(0));
switch (index) {
case 0:
viewHolder.mTitleText.setText("Title: " + uploadCurrent.getItemDetail().get(2));
viewHolder.mDescriptionText.setText("Description: " + uploadCurrent.getItemDetail().get(3));
viewHolder.mAuthor.setText("Author: " + uploadCurrent.getItemDetail().get(1));
viewHolder.mPublication.setText("Publication: " + uploadCurrent.getItemDetail().get(4));
break;
case 1:
viewHolder.mTitleText.setText("" + uploadCurrent.getItemDetail().get(1));
viewHolder.mSize.setText("" + uploadCurrent.getItemDetail().get(2));
viewHolder.mDescriptionText.setText("" + uploadCurrent.getItemDetail().get(3));
break;
}
}
@Override
public int getItemCount() {
return mUploads.size();
}
class ImageViewHolder extends RecyclerView.ViewHolder {
private TextView mTitleText;
private ImageView mimageView;
private TextView mPrice;
private TextView mAuthor;
private TextView mPublication;
private TextView mDescriptionText;
private TextView mSize;
public ImageViewHolder(@NonNull View itemView) {
super(itemView);
mPrice = itemView.findViewById(R.id.item_price);
mTitleText = itemView.findViewById(R.id.item_title);
mimageView = itemView.findViewById(R.id.item_view_uploaded);
mDescriptionText = itemView.findViewById(R.id.item_description);
switch (index) {
case 0:
mAuthor = itemView.findViewById(R.id.item_author);
mPublication = itemView.findViewById(R.id.item_publication);
break;
case 1:
mSize = itemView.findViewById(R.id.item_size);
break;
}
}
}
}