android-getString导致从strings.xml获取错误 [英] android - getString causes error getting from strings.xml

查看:338
本文介绍了android-getString导致从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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆