我很困惑如何将字符串从资源加载到可变列表,因为我想在我的项目上进行本地化
interface DummyMateriDataSource {
fun getMateriData(): List<Materi>
}
class DummyMateriDataSourceImpl() : DummyMateriDataSource {
override fun getMateriData(): List<Materi> {
return mutableListOf(
Materi(
imgUrl = "https://raw.githubusercontent.com/ryhanhxx/img_asset/main/img_kalkulator.webp",
title = "Lorem",
heading = "",
desc = "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. ",
subHeading = "",
subDesc = "",
source = ""
),
)
}
}
我想像这样从我的资源字符串加载,但不知道如何,它仍然是错误,请帮助大家嘿嘿。
interface DummyMateriDataSource {
fun getMateriData(): List<Materi>
}
class DummyMateriDataSourceImpl() : DummyMateriDataSource {
override fun getMateriData(): List<Materi> {
return mutableListOf(
Materi(
imgUrl = "https://raw.githubusercontent.com/ryhanhxx/img_asset/main/img_kalkulator.webp",
title = getString(R.string.txt_materi),
heading = getString(R.string.txt_materi),
desc = getString(R.string.txt_materi),
subHeading = getString(R.string.txt_materi),
subDesc = getString(R.string.txt_materi),
source = getString(R.string.txt_materi)
),
)
你的呵呵让我来这里试试这个
interface DummyMateriDataSource {
fun getMateriData(context: Context): List<Materi>
}
class DummyMateriDataSourceImpl : DummyMateriDataSource {
override fun getMateriData(context: Context): List<Materi> {
val title = context.getString(R.string.txt_materi)
return mutableListOf(
Materi(
imgUrl = "https://raw.githubusercontent.com/ryhanhxx/img_asset/main/img_kalkulator.webp",
title = title,
heading = title,
desc = title,
subHeading = title,
subDesc = title,
source = title
)
)
}
}
然后当你调用 getMateriData() 时,请确保传递上下文:
val dataSource = DummyMateriDataSourceImpl()
val materiList = dataSource.getMateriData(context)
将上下文替换为调用此方法的实际上下文,例如活动或片段上下文。确保在必要时导入 android.content.Context。
在这里你必须借助资源来做到这一点,因为它是你资源的一部分 你必须这样写
resources.getString(R.string.txt_materi),
如果您在 adater 中,则必须通过提供上下文来获取字符串,这样它的工作方式就像 context.resources.getString(R.string.yourstring)