RecyclerView pour plus d'une mise en page
1. Remplacer méthode getItemViewType (position int)
J'ai deux par exemple mises en page Présentation1 et layout2.I veulent Présentation1 en haut puis Layout2. Donc getItemViewType serait quelque chose comme ça
@Override
public int getItemViewType(int position) {
if(position == 0){ //for layout1
return 1;
}else{
return 2; //for layout2
}
}
2. Différents viewholder pour chaque mise en page comme celui-ci
class ViewHolder_LayoutOne extends RecyclerView.ViewHolder{
TextView name;
//Constructor
}
class ViewHolder_LayoutTwo extends RecyclerView.ViewHolder{
TextView name;
//Constructor
}
3. Gonflez différentes mises en page en fonction de la position
@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 votre vues selon la position
@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 méthode GetItemCount() le plus important // Retourne le nombre de vues
@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
}
Hope this helps !!!
J'ai essayé comme vous m'avez mentionné, mais je reçois des problèmes/erreurs à plusieurs endroits dans ma classe Adapter, pouvez-vous faire des modifications dans ma classe Adapter existante ... celle que j'ai posté ci-dessus – Sophie
jetez un coup d'oeil à ce projet d'application de film populaire udacity https: // github .com/gosemathraj/Cinéma/blob/maître/app/src/principal/java/com/gosemathraj/cinema/adapteurs/RecyclerViewCustomAdapter.java –
pour chaque 3e position votre getItemViewType vérifie juste la position comme ceci if ((position + 1) % 4 == 0) {return 1;} –