У меня есть макет с виджетом счетчика, который содержит мой счетчик с типами активности:
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools">
<data>
<import type="android.view.View"/>
<variable
name="viewModel"
type=".MainViewModel"/>
</data>
<android.support.constraint.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_behavior="@string/appbar_scrolling_view_behavior"
tools:showIn="@layout/app_bar_main"
tools:context=".qwe.MaincActivity">
<LinearLayout
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<Spinner
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:entries="@{viewModel.activityTypes}"
android:id="@+id/activity_types"/>
</LinearLayout>
</android.support.constraint.ConstraintLayout>
</layout>
И viewModel:
class MainViewModel
@Inject
constructor(
private var activityTypeRepository: ActivityTypeRepository,
) : ViewModel() {
private val compositeDisposable = CompositeDisposable()
val activityTypes = MutableLiveData<List<ActivityType>>()
fun loadActivityTypes() {
compositeDisposable.addAll(activityTypeRepository.getAll()
?.subscribeOn(Schedulers.newThread())
?.observeOn(AndroidSchedulers.mainThread())
?.subscribeWith(
object : DisposableObserver<List<ActivityType>>() {
override fun onComplete() {
}
override fun onNext(t: List<ActivityType>) {
activityTypes.value = t
}
override fun onError(e: Throwable) {
}
}
))
}
override fun onCleared() {
super.onCleared()
if (!compositeDisposable.isDisposed) {
compositeDisposable.dispose()
}
}
}
Как связать spinner и ActivityTypes из viewModel Я хочу загрузитьвсе данные из ActivityTypes в Spinner и сохранять некоторую информацию в ViewModel при выборе какого-либо элемента в Spinner
Тип действия - сложный объект, который содержит несколько полей, и мне нужно отобразить одно из полей и выбрать весь объект из спискаActivityTypes Пожалуйста, объясните, как это можно сделать
class ActivityType(
var id: String,
var name: String,
//other fields...
) : BaseObservable()