Android. Программирование для профессионалов. 4-е издание



Download 21,53 Mb.
Pdf ko'rish
bet306/485
Sana13.07.2022
Hajmi21,53 Mb.
#787165
1   ...   302   303   304   305   306   307   308   309   ...   485
Bog'liq
Android Programmirovanie dlya professionalov 4-e izdanie 2020 Fillips Styuart Marsikano Gardner


20sp
3dp
name="AppTheme"
parent="
Theme.AppCompat.Light.DarkActionBar
">
name="colorPrimary">@color/colorPrimary
name="colorPrimaryDark">@color/colorPrimaryDark

name="colorAccent">@color/colorAccent
BindingAdapter
По умолчанию привязка данных интерпретирует выражение
привязки как вызов свойства. Таким образом, конструкция
android:text="@{`File name: ` + viewModel.title
?? `No file`}"
преобразуется в вызов функции 
setText(String)
.
Впрочем, иногда этого оказывается недостаточно, и для
какого-то атрибута должно применяться нестандартное
поведение. В таких случаях следует написать 
BindingAdapter
:
@BindingAdapter("app:soundName")


fun 
bindAssetSound(button: 
Button,
assetFileName: String ) {
...
}
Просто создайте в любом классе своего проекта функцию
уровня файловой системы и снабдите ее аннотацией
@BindingAdapter
, передавая имя привязываемого атрибута в
параметре (да, это действительно работает). Каждый раз, когда
механизму привязки данных потребуется применить этот
атрибут, он вызовет вашу статическую функцию.
Вам достаточно создать функцию на уровне файла в любом
классе своего проекта и добавить ей аннотацию
@BindingAdapter
, передавая в качестве параметра имя
атрибута, к которому вы хотите привязать аннотацию, и 
View
,
к которому применяется аннотация, в качестве первого
параметра к функции (да, это правда работает).
В приведенном выше примере всякий раз, когда при
привязке данных встречается объект 
Button
с атрибутом
app:soundName
, содержащим выражение привязки, оно будет
вызывать вашу функцию, передавая 
Button
и результат
выражения привязки.
Вы даже можете создавать 
BindingAdapter
для более
обобщенных представлений, таких как 
View
или 
ViewGroup
. В
этом случае 
BindingAdapter
будет применяться к этому виду
и всем его подклассам.
Например, если вы хотите определить атрибут 
app:isGone
,
который будет задавать видимость любого объекта 
View
, на
основании логического значения, это можно сделать так:
@BindingAdapter("app:isGone")
fun bindIsGone(view: View, isGone: Boolean ) {


view.visibility = if (isGone) View.GONE
else View.VISIBLE
}
Так как 
View
является первым аргументом для 
bindIsGone
,
этот атрибут доступен для 
View
и всех его подклассов в модуле
вашего приложения. Это означает, что вы можете использовать
его с 
Button

TextView

LinearLayout
и так далее.
Вероятно, вы легко представите одну-две операции, в
которых привязка данных использовалась бы с виджетами
стандартной библиотеки. Для многих распространенных
операций уже определены адаптеры привязки. Например,
TextViewBindingAdapter
предоставляет дополнительные
атрибуты для 
TextView
. Информацию о них можно получить
прямо при просмотре исходного кода в Android Studio. Прежде
чем писать свое собственное решение, попробуйте нажать
сочетание клавиш 
(
Ctrl+Shift+O
) для поиска класса,
откройте связанный с ним файл адаптеров привязки и
проверьте, нет ли нужного вам готового класса.

Download 21,53 Mb.

Do'stlaringiz bilan baham:
1   ...   302   303   304   305   306   307   308   309   ...   485




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