android - MVVM 架构 android 中的 Spinner 问题

标签 android kotlin android-livedata

尽管我使用的是 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 中的 Spinner 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68676539/

相关文章:

android - 适用于 Android 的单一应用程序 ROM

kotlin - 在多次更新对象时,仅更新最后一个对象。我希望执行所有更新操作

android - 没有 LiveData 的房间

java - 在某个 View 上滑动时禁用 ViewPager 滑动

java - 不兼容的类型 : MainActivity cannot be converted to LifecycleOwner

Android 将 LiveData<> 分配给 ListView

java - BottomNavigationView 在单击时不起作用 - 必须单击两次

android - 当您的设备进入休眠状态时,Android 是否停止了您的线程

java - 如何检查服务是否在 Android 8 (API 26) 上运行?

android - Kotlin - 我可以使用方法重载的扩展吗?