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



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

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

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.setSelection(index)

在您的情况下,您可以做的是:

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

  2. 返回同一视图时,从共享首选项中获取所选项目

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

  4. 将找到的索引设置为微调器spinner.setSelection(index)

它应该像这样

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<*>?) {
}
}

相关内容

最新更新