2014/09/11

[android]ListViewで一部をグレーにしようとしたが、先頭もグレーになった

ListViewでメニューを作ったけど、まだ2番目と3番目が未実装なので、押せないようにした。
それはArrayAdapterのisEnabled()を乗っ取ればよかった。
しかし文字色が変わらなかったので、そのときだけ文字色をグレーにしようとした。

@Override
public View getView(int position, View convertView, ViewGroup parent) {
    TextView view = (TextView)super.getView(position, convertView, parent);
    ListData item = getItem(position);
    if ((view != null) && (item != null)) {
        view.setText(item.title);
        if ((position != 1) && (position != 2)) {
            //view.setTextColor(Color.BLACK);
        }
        else {
            view.setTextColor(Color.LTGRAY);
        }
    }
    return view;
}

これだと、なぜかリストの先頭もグレーになってしまうのだ。
コメントアウトしているBLACKのところを有効にすると、大丈夫。
うーむ。

isEnabled()を元に戻してみたが、変わらず。
じゃあ、真ん中だけグレーにしたらどうなる?とやってみると、先頭と3番目がグレーになった。
どっかでViewが使い回されるから、デフォルトじゃない値を入れるときは、そうじゃないときはデフォルトの値を指定するようにすべきなのかね。