2017-08-29 23 views
0

我是android新手。在我的项目之一,我使用列表视图和适配器,我将改变背景颜色。更改ListView位置明智的背景颜色

当我使用此代码其工作正常。

if (position % 2 == 0) { 
    rowView.setBackgroundColor(Color.RED); 
} else { 
    rowView.setBackgroundColor(Color.WHITE); 
} 

但是,当我要改变这样的条件。它不工作为什么?

if (position % 2 != 0) {  
    rowView.setBackgroundColor(Color.RED); 
} 
+0

显示的问题是什么? –

+0

好吧,你已经颠倒了颜色逻辑,但是确定'R.color.red'已经在你的项目中定义了? –

+0

你不只是改变条件....你正在改变参数*** Color.RED *** –

回答

0

ListView单元格被重用。当你填充一个单元格时,你会从之前使用过的单元格开始,该单元格可能已经有红色或白色背景色。如果您不更改该颜色,则先前的设置将保留并显示给用户。因此,按照经验法则,当您填充ListView/RecyclerView单元格时,您必须始终设置每个子视图。

0

if语句可以跟着一个可选的else语句,当布尔表达式为false,这 执行。 ELSE声明有效地表示,如果if语句为FALSE,则后面的任何代码都会执行 。

  • 添加ELSE语句好的做法。
+0

我试过它不工作仍然得到所有视图为滚动后上下滚动。 –

+1

@umeshvashisth为什么不直接调用'setBackground Color'?像:'rowView.setBackgroundColor(position%2!= 0?Color.RED:Color.WHITE);' – pskink

+1

@pskink我很欣赏你的答案,但我想知道为什么它不工作,如果我不设置白色或其他部分。 ..我知道三元将工作,并已经尝试过.....只是想知道(逻辑)在它后面。 –