應用說明
我在一個簡單的 android 應用程式中使用資料系結,它顯示了一個書籍串列。
我使用 aRecyclerView來列出它們。我準備了一個Book有標題和顏色的物件。
data class Book(val title: String, val color: BookColor)
哪里BookColor是一個列舉,包含 10 種不同的顏色。
現在,我BookView為所有 10 種顏色創建了 10 種不同的樣式(為自定義視圖量身定制)(以便它們與暗模式兼容)。
問題
我無法弄清楚的是如何將書籍樣式應用于實際BookView使用資料系結。
我想使用(來自資料系結)一個我可以在輔助類中定義的函式,例如:
fun mapColorToStyle(color: Book)
接受一個Book物件,該物件將映射book.color到其匹配的 XML 樣式。
然后樣式將回傳到視圖(RecyclerView專案)。
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools">
<data>
<variable
name="book"
type="com.x.y.model.Book" />
</data>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical">
<BookView
android:id="@ id/squircle"
android:layout_width="80dp"
android:layout_height="80dp"
android:layout_gravity="center"
android:padding="26dp"
style="@{???}"
/>
<TextView ... />
</LinearLayout>
有沒有辦法在不以編程方式設定樣式的情況下實作這一點(我懷疑這是一個很好的解決方案)?
uj5u.com熱心網友回復:
您可以使用系結配接器而不是應用上述樣式。
@BindingAdapter("bindBookViewStyle")
fun TextView.bindViewStyle(bookColor: BookColor) {
val style = mapColorToStyle(bookColor)
TextViewCompat.setTextAppearance(this, style)
}
然后修改你的專案xml
<layout xmlns:app="http://schemas.android.com/apk/res-auto">
<data>
<variable
name="book"
type="com.xx.xx.Book" />
</data>
<BookView app:bindBookViewStyle="@{book.color}" />
請檢查類似的答案
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/337087.html
下一篇:在XML檔案中搜索值串列
