Разрешено ли использовать разделители с SimpleCursorAdapter?

#android #listview #cursor #adapter #simplecursoradapter

#Android #просмотр списка #курсор #адаптер #simplecursoradapter

Вопрос:

У меня есть listview, который заполнен simplecursoradapter, который я переопределил. У меня есть запрос, который возвращает курсор, представляющий собой набор элементов и их разделителей в том порядке, в котором они мне нужны для отображения. У меня все отображается правильно, но я бы хотел, чтобы разделители не были кликабельными. Я пытаюсь выяснить, как переопределить метод IsEnabled(), чтобы он возвращал false для моих разделителей. Мой вопрос в том, как мне узнать положение моих элементов или с чем я могу сравнить значение int, передаваемое этому методу, чтобы узнать, является ли оно разделителем? Я подумал, может быть, столбец _id курсора, но поскольку я взял данные из двух разных столбцов для элементов и категорий (мои разделители), _id перемешаны и иногда имеют повторяющиеся номера. Кроме того, это вызовет у меня проблемы при рисовании строк? Получу ли я в конечном итоге отрисовку строк в местах, где строки имеют одинаковые _id, вместо ожидаемой строки? Я пробовал более длинные списки, чтобы посмотреть, будет ли это иметь место при прокрутке, но пока у меня не возникло проблемы.

Ответ №1:

значение int, переданное в isEnabled() методе, является позицией строки списка, для которой вам нужно указать, является ли это разделителем или нет.

Мой вопрос в том, как мне узнать положение моих элементов

вы можете использовать moveToPosition, чтобы определить, к какой строке базы данных относится эта позиция?

с чем я могу сравнить значение int, передаваемое этому методу, чтобы узнать, является ли оно разделителем?

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

Кроме того, это вызовет у меня проблемы при рисовании строк? Получу ли я в конечном итоге отрисовку строк в местах, где строки имеют одинаковые _id, вместо ожидаемой строки?

НЕТ

Комментарии:

1. Спасибо, кажется, теперь он работает правильно. Итак, у меня создалось впечатление, что столбец _id, который требовался CursorAdapters, будет использоваться для сопоставления строк listview со строками моего курсора. Автоматически ли курсор создает свои собственные идентификаторы строк? Мне просто интересно, как это работает. Спасибо за вашу помощь!

2. На самом деле нет идентификаторов строк, которые создает курсор. При выполнении запроса к базе данных есть возможность указать порядок сортировки (если указано значение null, то применяется некоторое значение по умолчанию). Строки вставляются в курсор таким образом