如何将值传递给Kotlin中的分页DataSourcec

问题描述 投票:0回答:1

我必须根据特定的ID提取分页数据。 id通过意图进入活动。然后我如何将该值传递给我的数据源。我正在使用mvvm体系结构

android kotlin datasource
1个回答
0
投票

所以您可以做类似的事情

活动


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块中,您可以初始化数据源。现在,您具有通过意图发送的视图模型中的值。我正在使用工厂创建视图模型。

© www.soinside.com 2019 - 2024. All rights reserved.