package jackall.devrealm.viewmodel import android.arch.lifecycle.ViewModel import android.arch.lifecycle.ViewModelProvider import android.databinding.BindingAdapter import android.support.v7.widget.LinearLayoutManager import android.support.v7.widget.RecyclerView import jackall.devrealm.App import jackall.devrealm.adapter.MainAdapter import jackall.devrealm.db.PersonRealmHelper import java.util.* /** * Created by matsumoto_k on 2017/11/08. */ class MainViewModel : LifecycleViewModel() { var adapter: MainAdapter? = null val personRealmHelper = PersonRealmHelper() override fun onCreate() { super.onCreate() val items = ArrayList<ItemViewModel>() personRealmHelper.findAll().apply { forEach { items.add(ItemViewModel(it)) } addChangeListener { results, changeSet -> changeSet.insertions.forEach { adapter?.insert(ItemViewModel(results.get(it))) } changeSet.deletions.forEach { adapter?.remove(it) } } } adapter = MainAdapter(App.instance, items) } override fun onDestroy() { super.onDestroy() personRealmHelper.close() } object Adapter { @JvmStatic @BindingAdapter("android:setMainAdapter") fun setMainAdapter(recyclerView: RecyclerView, adapter: MainAdapter?) { if (adapter == null) return recyclerView.layoutManager = LinearLayoutManager(App.instance) recyclerView.adapter = adapter } } class Factory() : ViewModelProvider.NewInstanceFactory() { override fun <T : ViewModel?> create(modelClass: Class<T>): T { return MainViewModel() as T } } }