Для каждого RecyclerView Adapter?

Вопрос, например чтобы создавать recyclerView, я должен создавать Ваш adapter и помещать рисунок внутри, однако, если я хочу другой рисунок, обязательно я должен создавать другой adapter?? если бы это был каждый recyclerView, у него есть его собственный adapter, и если бы он захотел другой, я должен создавать другой adapter, это так извините вопрос, но у меня есть сомнение. Спасибо.

2
задан 31.03.2016, 13:54
1 ответ

Ты не должен создавать другой Adapter, просто должен осуществлять getItemViewType(), чтобы определять твои различные типы совещаний:

@Override
public int getItemViewType(int position) {
   switch(position) {
       case 0:
           return TIPO_A;
       case 1:
           return TIPO_B;
       case 2:
           return TIPO_C;
       default:
           return TIPO_A;
   }
}

Верьте в твои ViewHolder:

public class ViewHolderA extends RecyclerView.ViewHolder {
    TextView mTitle;
    TextView mContent;
    public GroupViewHolder(View itemView) {
        super (itemView);
        ...
    }
}

public class ViewHolderB extends RecyclerView.ViewHolder {
    ImageView mImage;
    public ImageViewHolder(View itemView) {
        super (itemView);
        ...
    }
}

public class ViewHolderC extends RecyclerView.ViewHolder {
    ImageView mImage;
    public ImageViewHolder(View itemView) {
        super (itemView);
        ...
    }
}

В onCreateViewHolder() мы возвращаем тип ViewHolder (Контейнер):

@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
    switch (viewType) {
        case TIPO_A: return new ViewHolderA(...);
        case TIPO_B: return new ViewHolderB(...);
        case TIPO_C: return new ViewHolderC(...);
        ...
    }
}

В bindViewHolder() мы соединяем тип вида, который нужно перерабатывать:

@Override
public void bindViewHolder(RecyclerView.ViewHolder holder, int position) {
    switch (getItemViewType(position)) {
        case TIPO_A:
            ViewHolderA viewHolderA = (ViewHolderFirst)holder;
            ...
            break;
        case TIPO_B:
            ViewHolderB viewHolderB = (ViewHolderSecond)holder;
            ...
            break;
        case TIPO_C:
            ViewHolderC viewHolderC = (ViewHolderSecond)holder;
            ...
            break;
        ...
    }

AsГ - podrГ-схвати иметь различно типы совещаний с различными характеристиками в Гєnico Adapter:

introducir la descripción de la imagen aquí

5
ответ дан 24.11.2019, 14:40
  • 1
    Привет @Elenasys, но в котором он уезжает, он был бы должен устанавливать xml dise и # 241; или например этот LayoutInflater.from (parent.getContext ()) .inflate (R.layout.lista_album, null); – Gunnar 01.04.2016, 05:38
  • 2
    привет, если ты имеешь в виду .xml совещаний, где ты определяешь твои ViewHolder, которые должны соответствовать, и # 237; an в различные совещания (ViewHolderA, ViewHolderB и ViewHolderC). М и # 225; s поздно espec и # 237; fico в ответе. – Jorgesys♦ 01.04.2016, 06:32
  • 3
    Будь хорошо @Elenasys – Gunnar 01.04.2016, 12:37