0

Je souhaite que les vues de ma vue recycleur alternent les couleurs dans un wat spécifique. Actuellement, je ne suis en mesure de colorer les cartes basées sur si elles tombent dans un indice impair ou même, comme le montre le premier diagrammeRecycleur Afficher la couleur Alternateur

This is what i have currently

Ceci est mon code

if ((position % 2) == 0) { 
      holder.cv.setBackgroundColor(context.getResources().getColor(R.color.colorAccent)); 
     } else { 
      holder.cv.setBackgroundColor(context.getResources().getColor(R.color.colorPrimary)); 
     } 

C'est donc ma commande actuelle selon l'indice 0 - orange 1 - Bleu 2 - orange 3 - Bleu 4 - orange 5 - Bleu

But this is what i wanted to achieve

Voici l'ordre que je veux atteindre 0 - Orange 1 - Bleu 2 - Bleu 3 - Orange 4 - Orange 5 - Bleu Comment puis-je atteindre cet objectif?

+0

Comment la séquence continue-t-elle? Répète-t-il ou continue-t-il à alterner 2 couleurs? 1) orange, bleu, bleu, orange orange, bleu, orange, bleu bleu orange orange ... 2) orange, bleu, bleu, orange, orange, bleu, bleu, orange, orange, bleu bleu. .. –

+0

@SamuelePontremoli j'en ai besoin pour alterner les couleurs de sorte qu'aucune rangée n'ait exactement la même séquence de couleurs que la rangée précédente. Vérifiez le second diagramme pour voir l'ordre que j'essaie d'atteindre. –

+0

vous pouvez enregistrer vos détails de couleur avec vos données que vous utilisez pour gonfler votre recyclerview –

Répondre

0

Essayez ceci lorsque vous chargez des données:

private int i = 0; 
private int colorCount = 2; 
private boolean ba = true; 
private List<MemberData> MemberDATA= new ArrayList<>();  

pour (jeu de données Api_Model.member_list: curators.member_list) {

     if (i != 0) { 

          if (colorCount > 0) { 
           ba = false; 
           colorCount--; 
           if (colorCount == 0) { 
            colorCount = -2; 
           } 
          } else if (colorCount < 0) { 
           ba = true; 
           colorCount++; 
           if (colorCount == 0) { 
            colorCount = 2; 
           } 

          } 
         } else { 
          i = 10; 
          ba = true; 
         } 



         MemberData mMember = new MemberData(dataset.userID, 
           dataset.name, 
           dataset.image, 
           ba); 
         MemberDATA.add(mMember); 


        } 

et définissez cette ba booléen dans votre classe modèle arraylist: maintenant dans l'adaptateur changez la couleur basée sur boolean.

if(ba){ 
     //set blue color 
    }else{ 
     //set orange color 
    } 
1

essayer cette condition mon ami

boolean temp = false; 

if ((i % 2) == 0) { 

     viewHolder.imageView.setBackgroundColor(ContextCompat.getColor(context, R.color.colorLightBlue)); 
     if (temp) { 
      temp=false; 
      viewHolder.imageView.setBackgroundColor(ContextCompat.getColor(context, R.color.colorPrimary)); 
     } else { 
      viewHolder.imageView.setBackgroundColor(ContextCompat.getColor(context, R.color.colorLightBlue)); 
      temp = true; 
     } 

    } else { 
     if (!temp) { 
      temp=false; 
      viewHolder.imageView.setBackgroundColor(ContextCompat.getColor(context, R.color.colorLightBlue)); 
     } else { 
      viewHolder.imageView.setBackgroundColor(ContextCompat.getColor(context, R.color.colorPrimary)); 
      temp = true; 
     } 

    } 

de la condition OutPut Au-dessus

enter image description here

0

Après avoir réfléchi à ce sujet est ici une solution suffisamment générique pour vous. Cela devrait fonctionner pour un RecyclerView. Tout d'abord, calculez la ligne dans laquelle vous vous trouvez et pensez seulement plus tard à la couleur de l'objet. Si vous avez une ligne impaire, coloriez la colonne paire en bleu et l'orange en impair. Viceversa pour les rangées impaires. Pour calculer le numéro de ligne d'une position, il suffit de diviser la position par 2, ce qui correspond au nombre d'éléments par ligne.

+0

Je pense que vous n'avez pas lu la question complète. Il a déjà mis en place un concept pair/impair pour son recyclerview –

+0

Non, lisez attentivement ma réponse.Il a implémenté une logique pour les colonnes paires/impaires. la position% 2 vous donne juste l'uniformité de la colonne ou l'étrangeté. Il doit aussi faire quelque chose comme la position/2 pour connaître le numéro de la ligne, puis déterminer si c'est pair ou impair (le ROW, encore une fois, pas la colonne). –

+0

BTW la solution Nilesh Rathod a donné des œuvres bien aussi. –