Подтвердить что ты не робот

Что такое bindView() и newView() в CursorAdapter

У меня есть собственный CursorAdaptor в моем проекте с переопределенными методами bindView(View view, Context context, Cursor cursor) и newView(View view, Context context, Cursor cursor). Я хочу знать, для чего используется CursorAdapter, и какова разница между и использованием переопределения bindView() и newView().

Я прочитал сайт разработчика и этот учебник но все же я не понял. Поскольку я новичок в Android, пожалуйста, помогите мне понять эту концепцию.

4b9b3361

Ответ 1

Чтобы понять это, вы должны сначала понять, как BaseAdapter работает, поскольку CursorAdapter является подклассом BaseAdapter.

Android поддерживает пул представлений для ListView, который он вам даст, чтобы вы могли повторно использовать его, а не каждый раз создавать новое представление.

В BaseAdapter у вас будет функция под названием getView(), к которой один из параметров является View объектом с именем convertView. В принципе, это convertView будет null, если список будет загружен в первый раз, и он не будет null после того, как вы начнете перемещать список. Поэтому в методе getView() вашего BaseAdapter вы проверите, есть ли convertView null. Если да, вы будете раздувать его. Затем вы можете использовать представление и установить его элементы как обычно. Это значительно улучшит производительность прокрутки списка.

A CursorAdapter упрощает использование, когда источником данных списка является база данных. Однако в адаптере для курсора Android заботится о том, является ли convertView null или нет. В методе newView() вы просто раздуваете представление и возвращаете его. В методе bindView() вы устанавливаете элементы своего представления.

В качестве примера представьте себе список на устройстве, которое может отображать до 11 элементов списка на экране. В этом случае newView() вызывается до 11 раз. Однако bindView() будет вызываться много раз всякий раз, когда вы просматриваете представление списка. 11 просмотров, созданных в вашем методе newView, будут повторно использоваться снова и снова при прокрутке списка.