Intereting Posts
Как я могу правильно передать уникальные дополнения к ожидающемуся намерению? Android иногда я получаю android.app.RemoteServiceException: плохое уведомление отправлено из пакета. Зачем? Что такое простой способ заглушить / заглушить спокойный веб-сервис? Как Jack (набор компиляторов Java для Android) повлияет на разработчиков Scala Есть ли тема для Holo, полный экран, но с Action Bar? Android отчетов о сбоях (pre Froyo) Перевод идентификатора метки телефона телефона Android в строку Что делает класс SQLiteOpenHelper с параметром контекста? Как синхронизировать проекты с GitHub с Android Studio? Почему, похоже, для этого синхронизированного блока требуется много времени, чтобы получить блокировку? Приложение Xamarin mediaPicker.TakePhotoAsync вызывает сбои Показать и скрыть представление с помощью анимации слайдов вверх / вниз Как создать эмулятор для ONEPLUS TWO? Что делать, когда вы пытаетесь создать приложение для Android, и «Нет доступных целей»? Android: применить эффекты OpenGL к камере

GetView Vs. BindView в пользовательском CursorAdapter?

Итак, я смотрю это видео http://www.youtube.com/watch?v=N6YdwzAvwOA, а Ромен Гай показывает, как сделать более эффективный код адаптера интерфейса пользователя с помощью getView() . Это относится и к CursorAdapters? В настоящее время я использую bindView() и newView() для своих настраиваемых адаптеров курсора. Должен ли я использовать getView вместо этого?

Solutions Collecting From Web of "GetView Vs. BindView в пользовательском CursorAdapter?"

CursorAdapter реализована реализация getView() которая делегирует newView() и bindView() таким образом, чтобы обеспечить bindView() шаблона строки. Следовательно, вам не нужно ничего делать с CursorAdapter для CursorAdapter переработки строк, если вы переопределяете newView() и bindView() .

 /** * @see android.widget.ListAdapter#getView(int, View, ViewGroup) */ public View getView(int position, View convertView, ViewGroup parent) { if (!mDataValid) { throw new IllegalStateException("this should only be called when the cursor is valid"); } if (!mCursor.moveToPosition(position)) { throw new IllegalStateException("couldn't move cursor to position " + position); } View v; if (convertView == null) { v = newView(mContext, mCursor, parent); } else { v = convertView; } bindView(v, mContext, mCursor); return v; } 

Этот исходный код CursorAdapter, очевидно, cursorAdapter работает больше.

Реализация CursorAdapter отличается от подклассифицирующих обычных адаптеров, таких как BaseAdapter , вам не нужно переопределять getView() , getCount() , getItemId() поскольку эту информацию можно извлечь из самого курсора.

Учитывая Cursor , вам нужно только переопределить два метода для создания подкласса CursorAdapter :

bindView() : учитывая представление, обновите его, чтобы отобразить данные в предоставленном курсоре.

newView() : Это вызывает вызов для создания нового представления, которое входит в список.

CursorAdapter позаботится об CursorAdapter просмотре (в отличие от getView() на обычном Adapter ). Он не вызывает newView() каждый раз, когда ему нужна новая строка. Если он уже имеет View (не null ), он будет напрямую вызывать bindView() , таким образом, созданный вид будет повторно использован. CursorAdapter создание и совокупность каждого представления на эти два метода, CursorAdapter получает повторное использование вида, поскольку, как и в обычных адаптерах, обе эти вещи выполняются getView() .