android-getString导致从strings.xml获取错误 [英] android - getString causes error getting from strings.xml
问题描述
我目前正在使用的应用程序具有用于设置"菜单的RecyclerView.我的目标是将保存在strings.xml中的字符串用于RecyclerView,因为我的应用程序具有本地化功能. 就我而言,我生成的RecyclerView带有片段中保存的列表,该列表需要来自string.xml的字符串,但是,尝试从xml dosnt工作中调用字符串.
Im currently working on an app which has a RecyclerView for the Settings Menu. My objective is to use strings saved in strings.xml for the RecyclerView, because my app has localization; In my case, i generate the RecyclerView with a list saved in the fragment, which needs strings from string.xml, however, trying to call strings from the xml dosnt work.
如何将string.xml中的字符串作为参数传递?我如何在这种情况下通过?
frgSettingsMain.kt
class frgSettingsMain : Fragment() {
val listsettings = listOf(
//using @string/string here doesnt work!
dataListIcons(@string/..., "Description of option", R.drawable.ic_outline_color_lens_24),
dataListIcons(I WANT THE STRING HERE, "Description of option", R.drawable.ic_outline_dashboard_24),
dataListIcons("Option", "Description of option", R.drawable.ic_outline_image_24),
dataListIcons("Option", "Description of option", R.drawable.ic_outline_volume_up_24),
dataListIcons("Option", "Description of option", R.drawable.ic_outline_library_music_24)
)
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
retainInstance = true
}
override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
): View? = inflater.inflate(R.layout.fragment_settingsmain, container, false)
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
rvSettingsMain.apply {
layoutManager = LinearLayoutManager(activity)
adapter = adapterSettingsMain(listsettings)
}
}
companion object {
fun newInstance(): frgSettingsMain = frgSettingsMain()
}
}
dataListIcons.kt
data class dataListIcons (
val stringTitle: String,
val stringDescription: String,
val imageIcon: Int
)
adapterSettingsMain.kt
package com.meltixdev.revomusicplayer
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.recyclerview.widget.RecyclerView
import kotlinx.android.synthetic.main.item_settingsicon.view.*
class adapterSettingsMain(
var listsettings: List<dataListIcons>
) : RecyclerView.Adapter<adapterSettingsMain.SettingsViewHolder>() {
inner class SettingsViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView)
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): SettingsViewHolder {
val view = LayoutInflater.from(parent.context).inflate(R.layout.item_settingsicon, parent, false)
return SettingsViewHolder(view)
}
override fun getItemCount(): Int {
return listsettings.size
}
override fun onBindViewHolder(holder: SettingsViewHolder, position: Int) {
holder.itemView.apply {
rvSettingsTitle.text = listsettings[position].stringTitle
rvSettingsDescription.text = listsettings[position].stringDescription
rvSettingsIcon.setImageResource(listsettings[position].imageIcon)
}
}
}
推荐答案
使用getString(R.string.stringname)
修改 将对您的代码进行一些更改
Edit will make some changes to your code
data class dataListIcons (
val stringTitle: Int,
val stringDescription: Int,
val imageIcon: Int
)
val listsettings = listOf(
dataListIcons(R.string.title1, R.string.desription1,
R.drawable.ic_outline_color_lens_24),
dataListIcons(R.string.title2, R.string.desription2,
R.drawable.ic_outline_dashboard_24),
.........
)
在您的适配器中
in your adapter
holder.itemView.apply {
rvSettingsTitle.text = this.context.getString(listsettings[position].stringTitle)
rvSettingsDescription.text = this.context.getString(listsettings[position].stringDescription)
rvSettingsIcon.setImageResource(listsettings[position].imageIcon)
}
这篇关于android-getString导致从strings.xml获取错误的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!