Я только начинаю погружаться в некоторые базовые разработки для Android и экспериментирую с ListView
и интегрирую его с SimpleCursorAdapter
. Я просматриваю множество примеров кода в Интернете, но у меня также есть книга, которую можно использовать в качестве справки (Профессиональная разработка приложений для Android 2).
В книге они разрабатывают пример приложения списка дел, в котором элементы списка хранятся в базе данных SQLite с автоинкрементным целочисленным полем первичного ключа.
Пользователь может создавать новые элементы списка, но также может удалять выбранный элемент из списка. В коде, когда происходит удаление, поле первичного ключа ограничивается (в пределах предложения WHERE
оператора SQL) атрибутом position
элемента, а не rowid
.
элемента.
Мне это кажется неправильной реализацией. Глядя на документацию SQLite для AUTOINCREMENT
, он говорит, что это значение всегда будет увеличиваться, и старые значения никогда не будут повторно использоваться в одной и той же таблице. Так что, если вы удаляете и добавляете что-то в список, может показаться, что позиция и идентификатор строки могут довольно быстро не синхронизироваться.
Правильно ли тогда считать, что идентификатор строки - это правильный путь для "индексации" таблицы базы данных, а не позиции списка? Я думаю, что позиция будет безопасной для использования, если вы используете обычный ListAdapter
, но не подходит для индексации в базе данных.