Recycler查看颜色交流发电机

问题描述:

我希望我的回收站视图中的卡片视图能够在特定的扫管笏中交替使用颜色。目前,我只能够基于色彩的他们是否在奇数或偶数指数下跌了卡,第一个图Recycler查看颜色交流发电机

This is what i have currently

所示这是我的代码

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

因此,这是我的当前顺序按索引 0 - 橙色 1 - 蓝 2 - 橙色 3 - 蓝 4 - 橙色 5 - 蓝

But this is what i wanted to achieve

这是我想要实现的顺序 0 - 橙色 1 - 蓝 2 - 蓝 3 - 橙色 4 - 橙 5 - 蓝 我怎么能做到这一点?

+0

序列如何继续?它是重复还是继续交替2种颜色? 示例: 1)橙色,蓝色,蓝色,橙色橙色,蓝色,橙色,蓝色橙色橙色...... 2)橙色,蓝色,蓝色,橙色,橙色,蓝色,蓝色,橙色,橙色,蓝色蓝色。 .. –

+0

@SamuelePontremoli我需要它来交替颜色,使没有行具有与前一行完全相似的颜色序列。检查第二个图来查看要尝试实现的订单。 –

+0

您可以保存您的颜色详细信息以及您用于充填回收站视图的数据。 –

试试这个,当你加载数据:

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

为(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); 


        } 

,并在您的ArrayList模型类设置这个布尔BA: 现在在适配器中根据布尔值更改颜色。

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

尝试这种情况下我的朋友

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; 
     } 

    } 

输出上述条件

enter image description here

的考虑这个问题后这里为你一个通用的解决方案不够。它应该适用于RecyclerView。 首先计算你所在的行,然后再考虑物品的颜色。如果你有一个奇数行,那么在偶数列上打蓝色,在奇数上打上橙色。反之亦然。 要计算一个位置的行数,只需将该位置除以2,即每行所含物品的数量。

+0

我认为您没有阅读完整的问题。他已经为他的回收者视图 –

+0

实施了偶数/奇数概念,请仔细阅读我的答案。他实现了偶数/奇数列的逻辑。位置%2只是给你列的均匀性或奇怪。 他还必须像位置/ 2那样做一些事情来知道行的数量,然后确定它是偶数还是奇数(行,再次,不是列)。 –

+0

顺便提一下,Nilesh Rathod也给出了很好的解决方案。 –