SimpleCursorAdapter удалить значения - PullRequest
0 голосов
/ 11 ноября 2011

У меня есть ListView в каждой строке. У меня есть LinearLayout с некоторыми объектами (в основном, с некоторыми текстовыми представлениями).

Этот ListView я динамически заполняю из курсора.В этом курсоре у меня есть одно значение true или false.

Я хочу скрыть или сделать не кликабельными строки со значением false.Я пытаюсь этот код, но не работает

public void contentProviderInitialized(final Cursor cursor) {

    SimpleCursorAdapter commonTickets = new SimpleCursorAdapter(MyClass.this,
        R.layout.row_ticketing, cursor, new String[] {"price", "productName", "stopName" },
        new int[] { R.id.ticketing_price, R.id.ticketing_product, R.id.ticketing_stop_name }
    ) {
        @Override
        public void bindView(View view, Context context, Cursor cursor) {
            String enabledStr = cursor.getString(cursor.getColumnIndex("enabled"));
            String product = cursor.getString(cursor.getColumnIndex("productName"));
            boolean enabled = Boolean.parseBoolean(enabledStr);
            LinearLayout ticketingRow = (LinearLayout) view.findViewById(R.id.ticketing_row);
            if (enabled) {
                ticketingRow.setEnabled(true);
            } else {
                ticketingRow.setEnabled(false);
            }
            super.bindView(view, context, cursor);
        };
        MyClass.this.ticketing_list_view.setAdapter(commonTickets);
    }
}

Ответы [ 2 ]

1 голос
/ 11 ноября 2011

Переопределить isEnabled на адаптере

http://developer.android.com/reference/android/widget/BaseAdapter.html#isEnabled(int)

Этот ответ, кажется, намекает на это. Используйте movetoposition на курсоре. Похоже, что при этом производительность будет плохой, поэтому, возможно, вы захотите сделать некоторое кэширование значений true / false, основанных на числовой позиции? Попробуйте это. Посмотрите, как это происходит. Кеширование может быть пустой тратой.

0 голосов
/ 05 февраля 2019

Это была большая помощь, чтобы попробовать другой подход:

Android - как удалить элемент из курсора?

Добавьте позиции, которые вы хотите видеть, в новый MatrixCursor и поменяйте курсор на новый Matrix Cursor

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...