java - 当我回到 kotlin 时,如何将微调器值设置为我在离开页面之前选择的最后一个值

标签 java android kotlin drop-down-menu android-spinner

我想确保当我从下拉微调器中选择一个项目并在每次返回页面时离开页面时,最后选择的项目应该是下拉列表的当前值

当我返回页面时,下拉列表中的第一个值是微调器中显示的值,我需要它是微调器中最后选择的值

override fun initialize() {
        val customerLocation = ParentActivity.getCustomerLocation()
        stateItem = ""
        areaItem = ""
        backBtn= PageView?.findViewById(R.id.backBtn)!!
        backBtn.setOnClickListener {
            ParentActivity.removeFragment()
        }

        submitLocationBtn = PageView?.findViewById(R.id.submitLocationBtn)!!
        userLocation = PageView?.findViewById(R.id.userLocation)!!
        stateSpinner = PageView?.findViewById(R.id.stateSpinner)!!
        areaSpinner = PageView?.findViewById(R.id.areaSpinner)!!

        if (customerLocation == null) {
            userLocation.text = ""
        } else {
            userLocation.text = customerLocation!!.Area + ", " + customerLocation!!.State
        }

        stateSpinner.setOnItemSelectedListener(ParentActivity)
        areaSpinner.setOnItemSelectedListener(ParentActivity)

        areaSpinnerAdapter = AreaDropDownAdapter(areaList, ParentActivity)
        areaSpinner?.adapter = areaSpinnerAdapter

        stateSpinner.onItemSelectedListener = object : AdapterView.OnItemSelectedListener {
            override fun onItemSelected(p0: AdapterView<*>?, p1: View?, p2: Int, p3: Long) {
                stateItem = stateList[p2].Name
                getArea(stateItem)
            }

            override fun onNothingSelected(p0: AdapterView<*>?) {

            }

        }

        areaSpinner.onItemSelectedListener = object : AdapterView.OnItemSelectedListener {
            override fun onItemSelected(p0: AdapterView<*>?, p1: View?, p2: Int, p3: Long) {

                areaItem = areaList[p2].Name


            override fun onNothingSelected(p0: AdapterView<*>?) {

            }

        }

        submitLocationBtn.setOnClickListener {
            customerLocation!!.State = stateItem
            customerLocation.Area = areaItem
            var location = customerLocation!!.Area + ", " + customerLocation!!.State
            ParentActivity.getInAppDB().saveCustomerLocation(customerLocation!!)
            userLocation.text = location
            replaceFragment(Home(), removeFragment = false, showBottom = false)
        }

    }

最佳答案

您可以通过以下代码在 Spinner 中选择一个项目

spinner.setSelection(index)

根据您的情况,您可以做的是:

  1. 保存所选项目,也许您可​​以使用 SharedPreferences(您的情况:位置名称)

  2. 当返回同一 View 时,从 SharedPreferences 中获取所选项目

  3. 查找该项目的索引(您的情况:从 stateList 中)

  4. 通过spinner.setSelection(index)将找到的索引设置为spinner

应该是这样的

        stateInt = preference.getInt(customerLocation!!.State, 0)
        stateSpinner.setSelection(stateInt)

        stateSpinner.onItemSelectedListener = object : AdapterView.OnItemSelectedListener {
            override fun onItemSelected(p0: AdapterView<*>?, p1: View?, p2: Int, p3: Long) {
                stateItem = stateList[p2].Name
                getArea(stateItem)
                preference.edit {
                    putInt(customerLocation!!.State, stateInt)
                }
            }

            override fun onNothingSelected(p0: AdapterView<*>?) {

            }
        }

关于java - 当我回到 kotlin 时,如何将微调器值设置为我在离开页面之前选择的最后一个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62210562/

相关文章:

java - 将文件发送到安全的 SOAP Web 服务

java - 我的 Android 服务在启动时无法启动

android - 在 RecyclerView 中自动调整 TextViews 会导致文本大小减小

android - 需要帮助修复 Android Studio 中的工具栏问题

kotlin - 在 KotlinTest 中应该和应该完全正确有什么区别?

generics - Kotlin 类型与泛型不匹配

java - 未找到命名查询

java - 使用java ReentrantLock的时候需要给变量添加 volatile 吗?

Android Studio 不断显示缺少权限,即使我正在明确处理它。我如何解决它?

java - Android/Java 混音和静音