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メソッド内でisChangedtrueの場合はアイテムの背景色を青色に、もしfalseなら元の色(透過色)に戻しています。

もしisChangedtrueの場合の処理しか書いていないと背景色を変えたいアイテム以外も色が変わってしまうので注意です。

関連項目
プライバシーポリシー