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() .