GetView Адаптера Против. Компании bindview в пользовательском CursorAdapter?
Итак, я смотрю это видео http://www.youtube.com/watch?v=N6YdwzAvwOA и Ромен Гай показывает, как сделать более эффективный код адаптера пользовательского интерфейса с помощью getView() метод. Это относится и к Курсорадаптерам? В настоящее время я использую bindView() и newView() для моих пользовательских адаптеров курсор. Должен ли я использовать getView вместо этого?
3 ответа:
CursorAdapterесть реализацииgetView()это делегирует вnewView()иbindView(), таким образом, чтобы принудительно использовать шаблон рециркуляции строк. Следовательно, вам не нужно делать ничего особенного с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 работает больше.
The
CursorAdapterреализация отличается от подкласса обычных адаптеров, таких какBaseAdapter, вам не нужно переопределятьgetView(),getCount(),getItemId()потому что эта информация может быть получена из самого курсора.дали
Cursor, вам нужно только переопределить два метода для созданияCursorAdapterподкласс:
bindView(): учитывая вид, обновите его, чтобы отобразить данные в предоставленном курсоре.
newView(): это называется сознательно новый вид, который входит в список.The
CursorAdapterбудет заботиться о переработке просмотров (в отличие отgetView()метод на регулярныеAdapter). Он не вызываетnewView()каждый раз, когда он нуждается в новой строке. Если он уже имеетView(неnull), он будет напрямую вызыватьbindView(), таким образом, созданный вид используется повторно. Разделив создание и заполнение каждого представления на эти два метода,CursorAdapterдостигает повторного использования представления, где, как в обычных адаптерах, обе эти вещи сделано вgetView()метод.