Нативная разработка мобильных приложений



Download 3,69 Mb.
Pdf ko'rish
bet187/228
Sana21.07.2022
Hajmi3,69 Mb.
#834838
1   ...   183   184   185   186   187   188   189   190   ...   228
Bog'liq
Нативная разработка мобильных приложений

д
инамические
 
данные
 
в
 
Представлениях
 
сПисков
Наш список книг – отличная отправная точка для поиска способов более дина
-
мичного отображения данных. Как вы наверняка помните, в настоящее время 
список книг хранится во временном свойстве 
SAMPLE_DATA
основного объекта 
Book
, что упрощает его использование.
Однако, добавляя новые представления для отображения данных, мы быст-
ро обнаружим, что такой подход ведет к дублированию кода, что довольно не
-
удобно для обслуживания. Давайте внесем небольшие усовершенствования, 
добавив слой между нашим контроллером пользовательского интерфейса 
и списком.


Динамические данные в представлениях списков 

291
Android
В некоторых компонентах Android, таких как медиаплеер 
ExoPlayer
, поддер
-
живается понятие «источника данных». Также в Android существует понятие 
«контент-провайдера» – компонента, например, предоставляющего информа
-
цию о контактах в телефоне для использования в вашем приложении. Однако 
компоненты, которые используют шаблон «Адаптер», обычно оставляют воз
-
можность использовать произвольные источники данных. Данные могут быть 
определены непосредственно в коде, в виде списка объектов, в XML-файле на 
устройстве, в документе JSON, хранящемся в памяти или получаемом от веб-
службы.
В нашей пробной версии приложения мы просто добавили все наши данные 
в статический массив объектов 
Book
. Несмотря на определенные удобства, та
-
кой массив сложно поддерживать в актуальном состоянии – всякий раз, когда 
в библиотеку поступит новая книга, нам придется обновить этот массив и опуб-
ликовать новую версию приложения, надеясь, что все наши пользователи при
-
лежно обновят его. В долгосрочной перспективе мы, скорее всего, придем 
к использованию веб-службы, которая может обновляться администраторами 
библиотеки, и будем извлекать список книг из нее, периодически обращаясь 
к соответствующим конечным точкам службы. Также мы непременно захотим 
сохранить данные локально, а если у нас появится желание реализовать воз
-
можность сортировки или фильтрации с использованием хорошо известного 
и проверенного SQL, мы наверняка захотим преобразовать ответы JSON, воз
-
вращаемые веб-службой, в записи в базе данных.
Но все это – отдаленная перспектива, а пока давайте создадим простой 
интерфейс, предоставляющий необходимую информацию нашему адаптеру
и обновим адаптер, чтобы он соответствовал этому контракту. После этого мы 
сможем вносить изменения по мере развития наших требований и возмож
-
ностей.
Давайте взглянем на наш адаптер еще раз и посмотрим, как его изменить, 
чтобы он удовлетворял изменившимся требованиям:
Java
public class
BrowseBooksAdapter extends RecyclerView.Adapter {
@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
return new ViewHolder(new TextView(parent.getContext()));
}
@Override
public void onBindViewHolder(ViewHolder holder, int position) {
holder.mTextView.setText(Book.SAMPLE_DATA[position].getTitle());
}
@Override
public int getItemCount() {
return Book.SAMPLE_DATA.length;
}


292

Моделирование каталога библиотеки
public static class ViewHolder extends RecyclerView.ViewHolder {
private TextView mTextView;
public ViewHolder(@NonNull View itemView) {
super(itemView);
mTextView = (TextView) itemView;
}
}
}
Kotlin
class BrowseBooksAdapter :
RecyclerView.Adapter() {
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
return ViewHolder(TextView(parent.context))
}
override fun onBindViewHolder(holder: ViewHolder, position: Int) {
holder.mTextView.text = Book.SAMPLE_DATA[position].title
}
override fun getItemCount(): Int {
return Book.SAMPLE_DATA.size
}
class ViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
private val mTextView: TextView
init {
mTextView = itemView as TextView
}
}
}
Как видите, мы дважды обращаемся к статическому источнику данных – 
один раз при прокрутке представления, когда требуется обновить видимый 
элемент (в данном случае название книги), и второй раз, чтобы определить 
общее количество книг в нашем каталоге и 
RecyclerView
смог узнать, когда пре
-
кратить прокрутку. Интерфейс подобного источника данных можно было бы 
определить так:

Download 3,69 Mb.

Do'stlaringiz bilan baham:
1   ...   183   184   185   186   187   188   189   190   ...   228




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2024
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish