0

カスタムカーソルアダプターを介して生成されたリストビューがあります

リストを上下にスクロールすると、一部のテキストビューがランダムに緑に変わることを除いて、すべてが正常に機能しています。

リストビューを生成する私のコードは次のとおりです。

private class AchievementAdapter extends CursorAdapter {
    public AchievementAdapter(Context context, Cursor c) {
        super(context, c);
    }

    @Override
    public void bindView(View v, Context context, Cursor cursor) {
        TextView tv = (TextView) v.findViewById(R.id.achView1);

        if(cursor.getString(cursor.getColumnIndex("completed")).equals("yes")) {
            tv.setText(cursor.getString(cursor.getColumnIndex("name"))+" (completed)");
            tv.setTextColor(Color.GREEN);
        }
        else {
            tv.setText(cursor.getString(cursor.getColumnIndex("name")));
        }
    }

    @Override
    public View newView(Context context, Cursor cursor, ViewGroup parent) {
        LayoutInflater inflater = LayoutInflater.from(context);
        View v = inflater.inflate(R.layout.achievements_item, parent, false);
        return v;
    }
}    

setcachecolorhintについて何か読んだのですが、このメソッドはテキストビューには適用されません。スクロールしたときにテキストビューの色がランダムに変更されないようにするには、どうすればよいですか?

4

1 に答える 1

6

else次のようなステートメントで、textViewの色を通常に設定する必要があります。

@Override
public void bindView(View v, Context context, Cursor cursor) {
    TextView tv = (TextView) v.findViewById(R.id.achView1);

    if(cursor.getString(cursor.getColumnIndex("completed")).equals("yes")) {
        tv.setText(cursor.getString(cursor.getColumnIndex("name"))+" (completed)");
        tv.setTextColor(Color.GREEN);
    }
    else {
        tv.setText(cursor.getString(cursor.getColumnIndex("name")));
        tv.setTextColor(Color.BLACK); // Set your textview color as you need
    }
}

お役に立てれば

于 2012-05-31T18:04:31.143 に答える