简体   繁体   English

LiveData的微调适配器

[英]Spinner Adapter from LiveData

Is it possible to construct ArrayAdapter for Spinner from LiveData<List<T>> instead of normally List<T> ? 是否可以从LiveData<List<T>>而不是通常的List<T>构造用于Spinner ArrayAdapter

What is the best practice to bind a ViewModel's LiveData returned value to a Spinner ? 将ViewModel的LiveData返回值绑定到Spinner的最佳实践是什么?

If It is exactly what do you mean, so: 如果这正是您的意思,那么:

class MyVM : ViewModel() {
  ...
  private val mSpinnerData = MutableLiveData<List<String>>()
  ...
  fun fetchSpinnerItems(): LiveData<List<String>> {
    //fetch data
    mSpinnerData.value = <some fetched list of Strings>
    return mSpinnerData
  }
}

And after in your activity/fragment: 在您的活动/片段之后:

class MyActivity : AppCompatActivity() {
  private lateinit var mViewModel: MyVM
  ...
  override fun onCreate(outState: Bundle?) {
    //initialize your view model here...
    mViewModel.fetchSpinnerItems().observe(this, Observer { spinnerData ->
      val spinnerAdapter = ArrayAdapter(this, android.R.layout.simple_spinner_item, spinnerData)
      mSpinner.adapter = spinnerAdapter
    })
  ...
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM