<< Android-Note
ListViewで複数のアイテムの色を変える方法
ListViewでアイテムがクリックされたりしたときなどにそのアイテムの色を変える方法について簡単にまとめてみたいと思います。
その方法とはまず、ListViewのカスタムデータクラスに1つのフラグを追加します。
class ListData { public boolean isChanged = false; }
isChangedが必要になるフラグです。このフラグがtrueになっているアイテムの背景色を変えたいと思います。
そして背景色の変え方ですが、アダプタークラスのgetViewメソッド内で変更します。
public View getView(int position, View convertView, ViewGroup parent) { if(convertView == null) { LayoutInflater vi = (LayoutInflater)getContext().getSystemService( Context.LAYOUT_INFLATER_SERVICE); convertView = vi.inflate(R.layout.list_item, null); } ListData item = getItem(position); /** 背景色を変更 */ if(item.isChanged) convertView.setBackgroundColor(Color.Blue); else convertView.setBackgroundColor(Color.TRANSPARENT); }
このgetViewメソッド内でisChangedがtrueの場合はアイテムの背景色を青色に、もしfalseなら元の色(透過色)に戻しています。
もしisChangedがtrueの場合の処理しか書いていないと背景色を変えたいアイテム以外も色が変わってしまうので注意です。
© Kaz