내 응용 프로그램에서 일부 정보를 표시하고 값에 따라 textView의 색을 변경합니다.CursorAdapter 이상한 동작
public class DealsAdapter extends CursorAdapter {
private Cursor mCursor;
private Context mContext;
private final LayoutInflater mInflater;
public DealsAdapter(Context context, Cursor cursor) {
super(context, cursor, true);
mInflater = LayoutInflater.from(context);
mContext = context;
}
@Override
public View newView(Context context, Cursor cursor, ViewGroup parent) {
final View view = mInflater.inflate(R.layout.deals_row, parent, false);
return view;
}
@Override
public void bindView(View row, Context context, Cursor cursor) {
Text View percent = (TextView) row.findViewById(R.id.tvPercent);
percent.setText(cursor.getString(cursor
.getColumnIndex(DBHelper.D_PERCENT)));
float percentV = cursor.getFloat(cursor
.getColumnIndex(DBHelper.D_PERCENT));
if (percentV >= 41 && percentV <= 70) {
// Orange
percent.setTextColor(Color.parseColor("#F58549"));
} else if (percentV >= 71) {
// Green
percent.setTextColor(Color.parseColor("#17D11D"));
}
}
문제는 위아래로 스크롤하면 색상이 뒤섞여 시작되지만 값은 동일하게 유지됩니다.
어떤 조언이 필요합니까?
편집 : xml에서 색상을 빨간색으로 설정하고 필요한 경우에만 변경합니다.
(41)보다 있는지 확인해야합니다. –
그럴 수 없습니다. ListView의 뷰가 재사용됩니다. 화면 상단의 한 항목을 스크롤하면 성능상의 이유로 동일한 화면이 화면 하단에 나타나는 새 항목에 사용됩니다. 'bindView()'에 명시 적으로 기본 색상을 설정해야합니다. –
오보기가 재사용된다는 사실을 잊어 버렸습니다. 고맙습니다. –