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


 Вывод списка с данными Рис. 17.4



Download 3,69 Mb.
Pdf ko'rish
bet180/228
Sana21.07.2022
Hajmi3,69 Mb.
#834838
1   ...   176   177   178   179   180   181   182   183   ...   228
Bog'liq
Нативная разработка мобильных приложений

274

Вывод списка с данными
Рис. 17.4 

Строки без данных – это метафора жизни?
Нет, просто пустое табличное представление
к
ниги
Если походить по библиотеке, для которой мы создаем приложение, можно за
-
метить, что в ней ОЧЕНЬ МНОГО книг. Есть научно-популярные книги. Есть 
книги с картинками. Есть книги без картинок. Есть маленькие книги и большие 
книги, старые книги, книги для чтения на пляже, книги для чтения в ванной 
или за бокалом красного вина – есть самые разные книги!
Но какую информацию об этих книгах отображать?
К счастью, все книги имеют общие характеристики, среди которых:
 

название;
 

автор;
 

номер ISBN;
 

число страниц;
 

жанр.


Книги 

275
Чтобы вывести эту информацию в списке, нам нужно ее организовать. Ко
-
нечно, можно передавать все эти свойства в строки списка по отдельности, но 
на практике для этой цели обычно создается модель данных, описывающая 
информацию, хранимую в этих данных, – гораздо проще добавить новое поле 
в общий тип, чем добавлять его в каждый метод, обрабатывающий информа
-
цию о книге.
Давайте определим объект, представляющий книгу, который мы сможем ис
-
пользовать для заполнения элементов списка. Итак, как такой объект может 
выглядеть в Java и Swift? Самое замечательное, что в обоих языках определе
-
ние объекта выглядит почти одинаково.
Для представления книг в Android мы будем использовать стандартное 
определение класса. Такие классы иногда называют также «моделями» или 
«классами данных», но отметим, что в Kotlin последние определяются осо
-
бым образом (как вы увидите ниже). На самом деле функционально моде
-
ли ничем не отличаются от любых других классов. Некоторые разработчики 
предпочитают использовать «POJO» («Plain Old Java Objects» – простые объек
-
ты Java) – классы, которые не наследуют никаких других классов и не реали
-
зуют никаких интерфейсов, но вообще это дело вкуса. Также в классах моде
-
лей не принято использовать логические операции (методов), кроме методов 
чтения/записи свойств, однако, с технической точки зрения, это совершенно 
необязательно.
Согласно рекомендациям Android, предлагающим не использовать общедо
-
ступные члены, мы определим поля для хранения информации, а также мето
-
ды чтения/записи для доступа к этим полям. Вот определение нашего класса 
Book
:
public class Book {
String mTitle;
String[] mAuthors;
String mIsbn;
int mPageCount;
boolean mIsFiction;
public String getTitle() {
return mTitle;
}
public void setTitle(String title) {
mTitle = title;
}
public String[] getAuthors() {
return mAuthors;
}
public void setAuthors(String[] authors) {
mAuthors = authors;
}
public String getIsbn() {
return mIsbn;
}


276

Вывод списка с данными
public void setIsbn(String isbn) {
mIsbn = isbn;
}
public int getPageCount() {
return mPageCount;
}
public void setPageCount(int pageCount) {
mPageCount = pageCount;
}
public boolean isFiction() {
return mIsFiction;
}
public void setFiction(boolean fiction) {
mIsFiction = fiction;
}
}
Такое определение может показаться немного громоздким для ввода вруч
-
ную, однако Android Studio с радостью возьмет рутину на себя и сгенерирует 
методы чтения/записи из свойств и даже правильно подберет имена для них, 
следуя правилам венгерской нотации (то есть для свойства 
mName
будут сгене
-
рированы методы 
getName
и 
setName
, а не 
getMname
).
А теперь обратимся к Kotlin, который блистательно проявляет себя в этом 
примере, позволяя записать намного более компактное определение класса 
Book:
data class Book (
val title: String,
val authors: List,
val isbn: String,
val pageCount: Int,
val isFiction: Boolean
)
Дополнительно можно включить определение конструктора без аргументов, 
чтобы получить возможность создавать пустые экземпляры 
Book
:
data class Book (
val title: String,
val authors: List,
val isbn: String,
val pageCount: Int,
val isFiction: Boolean
) {
constructor() : this("", mutableListOf(), "", 0, false) {
// ничего не делает
}
}


Книги 

277
Этот код не только включает конструктор по умолчанию, принимающий все 
поля, но также объединяет его с самим определением. Кроме того, все поля 
определены как значения 
val
и, следовательно, являются неизменяемыми 
(в Java такие поля можно определить с ключевым словом 
final
), однако, как вы 
увидите далее, нам не требуется устанавливать значения по умолчанию, кото
-
рые будут изменяться при создании экземпляра. Эти значения определяются 
в конструкторе, что, в свою очередь, гарантирует наличие единственного не
-
изменного значения для каждого члена.
Теперь перейдем в Xcode. Добавьте в проект новый файл Swift с именем 
Book.swift
, выбрав в меню пункт 

Download 3,69 Mb.

Do'stlaringiz bilan baham:
1   ...   176   177   178   179   180   181   182   183   ...   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