簡體   English   中英

聲明一堆可繪制對象(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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM