データの視覚的な側面を変更するために、Android 用のカスタム ListView アダプターを作成しました。ListView を読み込むと、目的のアイテムの外観が変更されます。ビューをスクロールすると、最終的にリスト内のすべてのアイテムの外観が変更されるまで、他のアイテムがランダムに変更されます。
このタイプのコードについてSOで読んだことから、Androidは古いビューを再利用するため、position
フィールドが
public View getView(int position, View convertView, ViewGroup parent)
必ずしもデータ構造にマップされないことがわかります。これは、私が苦労している動作のようです。
Vincent が示唆するように、ViewHolder パターンを使用して getView メソッドを更新しました。
@Override
public View getView(int position, View convertView, ViewGroup parent)
{
View rowView = convertView;
if (rowView == null)
{
LayoutInflater inflater = LayoutInflater.from(context);
rowView = inflater.inflate(R.layout.rowlayout, null);
ViewHolder viewHolder = new ViewHolder();
viewHolder.text = (TextView) rowView.findViewById(R.id.tv01);
rowView.setTag(viewHolder);
}
ViewHolder holder = (ViewHolder) rowView.getTag();
String s = names[position];
holder.text.setText(s);
if (s.startsWith("a"))
{
holder.text.setTextColor(0xff00ffff);
}
return rowView;
}
変更する必要がある項目は静的なので、実行時に変更するよりも良い方法があれば、それもうまくいきます! どんな助けでも大歓迎です、ありがとう。