Android: стилизация элементов ListView из пользовательского CursorAdapter - PullRequest
1 голос
/ 04 августа 2010

У меня есть пользовательский CursorAdapter, который я использую для раздувания пользовательского макета и стиля элемента соответственно, как показано в коде ниже. Моя проблема заключается в том, что иногда предоставляется неверная информация о стиле, даже если данные, поступающие из БД, верны (поэтому для приведенного ниже примера я получу isEvent == true, но при этом стиль будет выглядеть как isEvent == false.

Это известная ошибка? Я делаю что-то не так или я могу что-то сделать, чтобы это исправить?

private class EventAdapter extends CursorAdapter {
    public EventAdapter(Context context) {
        super(context, null);
    }

    @Override
    public View newView(Context context, Cursor cursor, ViewGroup parent) {
        return getLayoutInflater().inflate(R.layout.event_view_list_item, parent, false);
    }

    @Override
    public void bindView(View view, Context context, Cursor cursor) {
        final boolean isEvent = cursor.getInt(EventQuery.IS_EVENT) == Event.EVENT;
        final String eventName = cursor.getString(EventQuery.NAME);
        final TextView eventNameView = (TextView) view.findViewById(R.id.event_name);

        if (isEvent) {
            eventNameView.setText(eventName);
            view.findViewById(R.id.arrow).setVisibility(View.VISIBLE);
            view.findViewById(R.id.in_play_icon).setVisibility(View.GONE);
        } else {
            eventNameView.setText(cursor.getString(EventQuery.NAME));
        }
    }
}

1 Ответ

1 голос
/ 16 сентября 2011

Я думаю, что это просто случай старой проблемы повторного использования представлений в Android. Сбрасывая вид и заменяя, где это уместно, это можно исправить

...