gpt4 book ai didi

android - MVVM架构android中的微调器问题

转载 作者:行者123 更新时间:2023-12-05 00:18:17 24 4
gpt4 key购买 nike

当我旋转屏幕时,虽然我使用的是 MVVM 架构,但微调器会重置。
在设置值时,我在 View 模型中设置了值,但仍将微调器重置为其原始状态。
在主要 Activity 中我已经这样做了,

    GetBusinessPartners.setOnItemSelectedListener(object:OnItemSelectedListener{
override fun onItemSelected(parent: AdapterView<*>?, view: View?, position: Int, id: Long) {
dealMealPreApproval.initsetSpinnerIndex(position)
}

override fun onNothingSelected(parent: AdapterView<*>?) {
TODO("Not yet implemented")
}

})

dealMealPreApproval.getSpinnerValue().observe(this@DealMealPreApproval, Observer {
GetBusinessPartners.setSelection(it)
})
在 View 模型中我已经这样做了
class MealPolicyViewModel : ViewModel() {

var businessPartners=MutableLiveData<ArrayList<BusinessPartnersModel>>()
var spinnerString=MutableLiveData<Int>()


fun initsetSpinnerIndex(valueOfSpinner:Int){
spinnerString.value=valueOfSpinner
Log.d("valueOfValueOFSPinner",valueOfSpinner.toString())

}

fun getSpinnerValue() : LiveData<Int>{

return spinnerString
}
}

最佳答案

对于像 double、boolean、string、int 这样的小数据,您应该像这样使用 onSavedInstance,因为会使用大量数据 View 模型。

 override fun onSaveInstanceState(outState: Bundle) {
super.onSaveInstanceState(outState)
outState.putInt("MySPinner", GetBusinessPartners.getSelectedItemPosition());

}
然后在 OnCreate 方法中像这样 getValue
var counter=0

if (savedInstanceState != null) {

counter = savedInstanceState.getInt("MySPinner", 0)

}
在 Spinner Adapter 调用 SetSelection 并在其中传递计数器之后,
   ArrayAdapter<BusinessPartnersModel>(context, android.R.layout.simple_list_item_1, list)
GetBusinessPartners.setSelection(counter)

关于android - MVVM架构android中的微调器问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68676539/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com