2017-10-10 3 views
0

J'ajoute une vue composée sur onCreateViewHolder pour chaque élément de données du RecycleView. Je dois aligner à droite ou à gauche selon la valeur de l'élément de données.Comment définir les paramètres de disposition pour l'affichage ajouté à l'adaptateur RecycleView?

Si je définis les paramètres de disposition pour la vue de cette méthode, ils sont remplacés par les valeurs du fichier de mise en page XML.

La seule solution que je peux proposer est d'avoir 2 fichiers de mise en page différents, mais inutile de dupliquer les fichiers.

Une idée de comment accomplir cela par code?

Mise à jour: j'essaie aussi à onBindViewHolder, le code ci-dessous.

@Override 
public void onBindViewHolder(ViewHolder holder, int position) { 

    View v = holder.itemView; 

    //to simplify i try to aling all to the rigth 
    RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT); 
    params.addRule(RelativeLayout.ALIGN_PARENT_END); //this settins has effect if defined on the layout file 
    v.setLayoutParams(params); 
} 

Répondre

0

À découvrir. J'ai supposé que holder.itemView était la vue de composé j'ai ajouté. J'avais besoin d'utiliser findViewById pour obtenir la vue composée et définir les paramètres de cette vue. Ainsi, la solution était de trouver Voir le composé de la itemView comme ceci:

View v = holder.itemView.findViewById(android.R.id.content); 

Appliquez ensuite les paramètres à ce point de vue telle que publiée dans la question.

1

Tout ce que fait selon les données de l'élément de données doit être fait dans onBindViewHolder, pas onCreateViewHolder. Au moment de la création, vous ne devez définir que les éléments qui seront corrects quelles que soient les données réellement liées ou la position à laquelle elles sont liées. Toutes les données et les paramètres spécifiques à la position se font dans onBindViewHolder.

+0

Ca a du sens, mais j'ai déjà essayé et ça n'a pas fonctionné. – ByteArtisan