LiveData 的 Spinner 适配器

Hai*_*uha 3 java android

是否可以构造ArrayAdapterfor SpinnerfromLiveData<List<T>>而不是 normal List<T>

将 ViewModel 的 LiveData 返回值绑定到 的最佳实践是Spinner什么?

小智 5

如果这正是你的意思,那么:

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
  }
}
Run Code Online (Sandbox Code Playgroud)

在您的活动/片段之后:

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
    })
  ...
}
Run Code Online (Sandbox Code Playgroud)

  • 哎呀,我忘了说我用 Java 而不是 Kotlin 编写代码 &gt;.&gt; (2认同)