Один голос за объекты сущностей (POJO). Передача курсоров, особенно слою пользовательского интерфейса, кажется мне неправильной (независимо от того, подразумевает ли Android sdk, что это так). Обычно существует несколько способов заполнить ваш пользовательский интерфейс, и я стараюсь избегать тех, которые непосредственно используют курсоры. Например, чтобы заполнить свои пользовательские представления списка, я использую SimpleAdapter и предоставляю объектам моей коллекции возможность возвращать представление себя в виде List<? extends Map<String, ?>>
для конструктора SimpleAdapter.
Я использую шаблон, где каждая таблица обернута объектом сущности и имеет класс провайдера, который обрабатывает мои операции CRUD, связанные с этой сущностью. По желанию, если мне нужны расширенные функциональные возможности для коллекций, я тоже обертываю их (т. Е. EntityItems extends ArrayList<EntityItem>
). У провайдера есть базовый класс, который я передаю ссылку на класс DbAdapter, который выполняет тяжелую работу вокруг базы данных.
Самая большая причина, помимо личных предпочтений, заключается в том, что я хочу скрыть этот вид кода как можно дальше от моего пользовательского интерфейса:
String something = cursor.getString(cursor.getColumnIndex(COLUMN_NAME_CONSTANT));
Если я вижу такой код встроенным в слой пользовательского интерфейса, я обычно ожидаю увидеть гораздо худшее, скрывающееся за углом. Может быть, я только что провел слишком много времени в корпоративном мире, работая над большими командами, но я предпочитаю удобочитаемость, если нет законных проблем с производительностью, или если это достаточно маленькая задача, когда выразительность просто избыточна для предприятий.