![](/img/trans.png)
[英]What is the best way to declare on UI component in android with Kotlin?
[英]What is the best way to declare a bunch of drawables (Kotlin)?
我有很多矢量圖標作為 XML 可繪制資源(准確地說是 96 個)。 我將它們分為 8 個類別。 目前我宣布他們如下:
private val categoryA = arrayListOf(R.drawable.a1, ... R.drawable.an)
private val categoryB = arrayListOf(R.drawable.b1, ... R.drawable.bn)
***
private val categoryH = arrayListOf(R.drawable.h1, ... R.drawable.hn)
一切正常且快速,但我不確定這是否是真正應用程序的好方法。 我還在應用程序中將 Room DB 用於其他目的,所以我應該在首次啟動時添加新表並預填充 DB 嗎? 以后添加/刪除圖標也很容易,至少現在是這樣......但另一方面,代碼看起來不太好(對我來說)有這么多R.drawable.id
行。
編寫一個可以通過反射獲取可繪制 Int 的函數:
fun getDrawableIdByName(name: String) = try {
R.drawable::class.java.getField(name).getInt(null)
} catch (e: NoSuchFieldException) {
error("No drawable with name $name")
}
然后你可以用它構建你的列表:
val categoryLists = ('a'..'h')
.map { category ->
List(12) { index ->
getDrawableIdByName("$category${index + 1}")
}
}
我想你可以在第一次啟動后把它寫到你的數據庫中,但我認為只有 96 個項目是矯枉過正的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.