Так что же мне делать, если не настроить пользовательский адаптер?
Помимо пользовательского подхода Adapter
, вы можете использовать CursorWrapper
для добавления собственных _id
значений. Просто последовательно пронумеруйте их, начиная с 1
или чего-то еще, и не пытайтесь использовать их в качестве фактических ключей в вашей базе данных. : -)
UPDATE
С манжеты ...
Шаг # 1: Создать подкласс CursorWrapper
.
Шаг # 2: Повесьте на getColumnCount()
значение обернутого Cursor
, которое здесь называется N
.
Шаг № 3: переопределить getColumnCount()
для возврата N+1
.
Шаг # 3: переопределить getColumnIndex()
, чтобы вернуть N
в качестве индекса столбца _id
.
Шаг # 4: Переопределить все другие методы, которые принимают int columnIndex
в качестве параметра. Если индекс не N
, делегируйте работу обернутой Cursor
; в противном случае, реализуйте его самостоятельно (или бросьте RuntimeException
, если это невозможно или неудобно и вам это не нужно). Для реализаций getInt()
и getLong()
(не уверен, какой CursorAdapter
использует), верните какое-то вероятное уникальное значение (например, просто используйте вашу позицию через getPosition()
).
Шаг # 5: Создайте экземпляр вашего подкласса, оберните ваш Cursor
предложением DISTINCT
и передайте его CursorAdapter
.