我必须根据特定的ID提取分页数据。 id通过意图进入活动。然后我如何将该值传递给我的数据源。我正在使用mvvm体系结构
所以您可以做类似的事情
活动
class MainActivity : BaseActivity() {
lateinit var binding: ActivityMainBinding
var value: Int = 0
private val viewModel: MainActivityViewModel by lazy {
ViewModelProvider(this, MainActivityViewModel.Factory(value)).get(
MainActivityViewModel::class.java
)
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = DataBindingUtil.setContentView(this, R.layout.activity_main)
/*
* get data from intent here and assign to value like
*/
value=intent.getIntExtra("keyName",0)
binding.viewModel = viewModel
binding.lifecycleOwner = this
}
}
由于我们的视图模型是惰性的,所以只有更新后的值才能得到。
现在为您的视图模型
class MainActivityViewModel(value: Int) : BaseViewModel() {
init {
/*
do initiaize your data source here now
*/
}
class Factory(val value: Int) : ViewModelProvider.Factory {
override fun <T : ViewModel?> create(modelClass: Class<T>): T {
if (modelClass.isAssignableFrom(MainActivityViewModel::class.java)) {
@Suppress("UNCHECKED_CAST")
return MainActivityViewModel(value) as T
}
throw IllegalArgumentException("Unable to construct viewmodel")
}
}
}
现在在init块中,您可以初始化数据源。现在,您具有通过意图发送的视图模型中的值。我正在使用工厂创建视图模型。