2017-08-29 36 views
0

私はアンドロイドに新しくなりました。私のプロジェクトの1つでは、リストビューを使用しており、アダプタでは背景色を変更します。ListView位置の背景色を変更してください

私はこのコードを使用しています。

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

しかし、私はthis.itsのような条件を変更しようとすると、なぜ動作しないのですか?文は、ブール式が偽のときに実行される オプションのelse文、続けることができますアン場合

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

問題は何ですか? –

+0

さて、色の論理を逆にしましたが、あなたのプロジェクトで 'R.color.red'が定義されていることを確信していますか? –

+0

あなたはただの条件を変更しているだけではありません....あなたは*** Color.RED ***でパラメータを変更しています。 –

答えて

0

リストビューのセルが再利用されます。セルを塗りつぶしているときは、すでに使用されているセルが赤色または白色の背景色になっている可能性があります。その色を変更しないと、以前の設定が残り、ユーザーに表示されます。 ListView/RecyclerViewセルを塗りつぶしているときは、経験則として常に各サブビューを設定する必要があります。

0

ELSEステートメントは、ifステートメントがFALSEの場合、 の後のコードが実行されることを効果的に示しています。

  • 良い練習のためのELSE ステートメントを追加します。
+0

私はまだ上下にスクロールした後、すべてのビューが赤色として機能していないことを試みました。 –

+1

@umeshvashisthなぜ 'setBackground Color'を無条件にコールしないのですか? 'rowView.setBackgroundColor(位置%2!= 0?Color.RED:Color.WHITE);' – pskink

+1

@ pskink私はあなたのansに感謝しますが、なぜ私は白や他の部分を設定していない場合は動作していないか知りたいです。私は3元が働き、すでにそれを試したことを知っています。ただ、その背後に(論理的に)知りたいだけです。 –

関連する問題