RecyclerView более одного макета
1. Override getItemViewType (целое положение) метод
например у меня есть две раскладки Layout1 и layout2.I хотят Layout1 в верхней части, а затем Layout2. Так getItemViewType будет что-то вроде этого
@Override
public int getItemViewType(int position) {
if(position == 0){ //for layout1
return 1;
}else{
return 2; //for layout2
}
}
2. Различные viewholder для каждого макета, как этот
class ViewHolder_LayoutOne extends RecyclerView.ViewHolder{
TextView name;
//Constructor
}
class ViewHolder_LayoutTwo extends RecyclerView.ViewHolder{
TextView name;
//Constructor
}
3. Надуйте различные схемы в соответствии с положением
@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
RecyclerView.ViewHolder vh = null;
if(viewType == 1){
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.recyclerview_layout_one,parent,false);
vh = new MyViewHolder_LayoutOne(view);
}else if(viewType == 2){
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.recyclerview_layout_two,parent,false);
vh = new MyViewHolder_LayoutTwo(view);
}
return vh;
}
4. Bind ваш в соответствии с позицией
@Override
public void onBindViewHolder(final RecyclerView.ViewHolder holder, final int position) {
switch(getItemViewType(position)){
case 1: //for layout 1
((ViewHolder_LayoutOne)holder).name.setText("");
break;
case 2:// for layout 2
((ViewHolder_LayoutTwo)holder).name.setText("");
break;
}
}
Метод
5.Now Наиболее важный getItemCount() // возвращает число просмотров
@Override
public int getItemCount() {
return toptitles.length + 1;
// as i have only layout at the top and the remaining size equals the length of the array toptitles.So the overall length would be
//number of views of layout1 + number of views of layout2
}
Надеется, что это помогает !!!
Я пробовал, как вы упомянули меня, но я получаю проблемы/ошибки во многих местах своего класса Adapter, можете ли вы внести изменения в мой существующий класс адаптера ... который я опубликовал выше – Sophie
, посмотрим на это (проект популярного приложения для udacity) https: // github .com/gosemathraj/Cinema/blob/master/app/src/main/java/com/gosemathraj/cinema/adapters/RecyclerViewCustomAdapter.java –
для каждой третьей позиции ваш getItemViewType просто проверяет позицию как это, если ((позиция + 1) % 4 == 0) {return 1;} –