2016-12-30 10 views
0

大きなListViewを1つ表示することになっているアクティビティがあります。今、私は単一の線の背景色を設定したいと思います。私はgetChildAtでそれをやろうとしましたが、私は可視の線だけをマークすることができます。リストが画面よりも大きければ、それはもう働きません。私は実際の選択肢を見つけられませんでしたので、助けてもらえれば本当にうれしいです。スクロールにもかかわらず、ListView内の単一のViewの背景色を変更する

+2

彼らはパフォーマンスのために画面上に来るようリストビューが子供を描く...なぜあなたが表示されていない子の背景色を設定したいのでしょうか? – akash93

+0

わかりました、私に説明しましょう:私はonclickリスナーとリストを持っています。最後の項目は特別なもので、onclickリスナの動作を変更します。この変更された動作に、影響を受けるアイテムの背景色を変更して強調したい。 getChildAtを使用すると、私は現在表示されている行を変更するだけです。私がもう一度上にスクロールすると、以前は目に見えないアイテムは色付けされません。 – Vallout

答えて

1

これは、ListViewのアダプタ内から行うことができます。 getView(...)メソッドでは、現在の項目が単一の行の条件と一致するかどうかをチェックし、一致する場合は現在の行の特定の背景色を設定し、そうでない場合はデフォルトの色を設定します。

このような何か:

public class MyCustomAdapter extends BaseAdapter{ 

    @Override 
    public View getView(int position, View convertView, ViewGroup parent) { 
     // .... 
     convertView = inflater.inflate(R.layout.item_layout, null); 
     // ... 

     Item item = items.get(position); 
     if(item.isSingleLine()){ 
     convertView.setBackgroundColor(SINGLE_LINE_BG_COLOR); 
     }else{ 
     convertView.setBackgroundColor(DEFAULT_BG_COLOR); 
     } 
    } 

} 
+0

ありがとうございます!アダプターを使用するのはとても簡単でしたが、私はそれについては考えていませんでした。 onclicklistenerを使用すると、私の唯一の解決策はアダプターを再度設定することだったので、何とかしてこのようにちょっとした感じがしますが、それは問題ないと思います。 – Vallout

関連する問題