В вашей базе данных не обязательно должен быть столбец с именем _id, но SimpleCursorAdaptor должен иметь возвращаемый столбец. Вы можете сделать это с псевдонимом.
Например, у меня есть таблица со столбцами ...
uid,name,number
Чтобы запросить это для SimpleCursorAdapter, я делаю это с базой данных rawQuery
...
SELECT uid as _id,name,number FROM MY_TABLE
Это отлично работает и предоставляет необходимый столбец '_id' в SimpleCursorAdapter.
РЕДАКТИРОВАТЬ: Насколько я понимаю, поле _id используется в качестве уникального ключа, чтобы обеспечить правильную обработку данных, которые обрабатывают курсор, адаптерами и представлениями адаптеров и т. Д.
Посмотрите на модель данных в документах для Поставщики контента .
Использование уникального ключа в «базах данных» любого рода является довольно универсальной практикой, и, насколько я могу судить, использование имени столбца «_id» (или «_ID») является просто способом стандартизации и упрощение работы с базами данных, поставщиками контента, курсорами, адаптерами и т. д.
Короче говоря, для того, чтобы эти различные компоненты работали правильно, им нужен столбец данных с уникальными значениями, но они также должны «знать», как называется этот столбец. Они не могли бы, так сказать, «знать», что мое имя столбца «uid» - это то, что им нужно, а не мои столбцы «имя» и «число».