如何设置在Alert Dialog 中高亮选中的项目?

How to set the selected item highlighted in Alert Dialog?

有什么办法可以在alertdialog中高亮选中的项目吗?在我的例子中,我向警报对话框添加了两个项目,我想将点击的项目设置为高亮显示。我目前的方法是我只能突出显示一个项目而不是用户 interactive.I 认为我的 alertdialog 不记得选择 item.Here 是我的方法-

lateinit var dialog: AlertDialog
    val listItems=arrayOf("English", "Thai")
    var selectedElement= 0

    val builder=AlertDialog.Builder(this)
    builder.setTitle("Choose Language")
    builder.setSingleChoiceItems(listItems,selectedElement,DialogInterface.OnClickListener() { dialogInterface, i ->
                if (i == 0) {
                setLocale("en")
                recreate()

            }

            if (i == 1) {
                        setLocale("th")
                recreate()

            }
            dialogInterface.dismiss()

    })

    dialog= builder.create()
    dialog.show()

好吧,经过大量参考,我终于想出了一个解决方案,使用SharedPreferences。我将所选项目的位置值保存在 SharedPreferences 中,并在应用程序开始时检索。通过这种方式,我可以在下次启动应用程序时看到所选项目。这是我更改为 -

的代码
class MainActivity : AppCompatActivity() {
        var selectedItems= -1

override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        loadLoacle()
        loadvalue()
        setContentView(R.layout.activity_main)
}

private fun changeLanguage(){
    lateinit var dialog: AlertDialog
    val listItems=arrayOf("English", "Thai","Myanmar")
    val builder=AlertDialog.Builder(this)
    builder.setTitle("Choose Language")
    builder.setSingleChoiceItems(listItems,selectedItems,DialogInterface.OnClickListener() {dialogInterface,i->
        if (i == 0) {
            setLocale("en")
            recreate()
        }

        if (i == 1) {
            setLocale("th")
            recreate()
        }

        if (i == 2) {
            setLocale("my")
            recreate()
        }
        setvalue(i)
        dialogInterface.dismiss()

    })
    dialog= builder.create()
    dialog.show()

}

private fun setLocale( lang:String) {

    val locale=Locale(lang)
    Locale.setDefault(locale)
    val config=Configuration()
    config.locale=locale
    baseContext.resources.updateConfiguration(config, baseContext.resources.displayMetrics)

    var editor=getSharedPreferences("Settings", MODE_PRIVATE).edit()
    editor.putString("My_Lang", lang)
    editor.apply()

}

private fun loadLoacle(){
    var prefs=getSharedPreferences("Settings", Activity.MODE_PRIVATE)
    val language:String? = prefs.getString("My_Lang","")
    println("RESULT"+language)
    setLocale(language!!)
}

private fun setvalue( v:Int) {

    var editor=getSharedPreferences("Settings", MODE_PRIVATE).edit()
    editor.putInt("value", v)
    editor.apply()

}

private fun loadvalue(){
    var prefs=getSharedPreferences("Settings", Activity.MODE_PRIVATE)
    val language:Int? = prefs.getInt("value",0)
    selectedItems = prefs.getInt("value",0)
    println("RESULT"+language)
    setvalue(language!!)

}
}

顺便说一句,请随意编辑。编码愉快 :)