在 Activity 中使用 ViewModel 中的变量。最佳实践

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

我想在活动中使用的虚拟机上有三个

List
。 这些列表不会随时间改变,总是相同的,所以它不是一个
State
。 我应该在活动中执行以下操作吗?

private val gymListViewModel: GymListViewModel by viewModels()
val myList1 = gymListViewModel.list1
val myList2 = gymListViewModel.list2
val myList3 = gymListViewModel.list3

这是正确的吗? 或者我应该做的是使用

LiveData
Flow
来收听活动? 或者也许我应该创建一个具有三个 val 的数据类,以便我只需在活动上调用该对象?

我一直在想的另一件事是调用填充列表的方法,例如:

val myList1 = gymListViewModel.getList1()
但如果我没记错的话,虚拟机不应该有返回方法,它们只是更新状态。 我是根据最佳实践来问这个问题的。 谢谢

android kotlin android-livedata android-viewmodel
1个回答
0
投票

如果列表是静态且不可变的,您可以直接从 ViewModel 访问列表,而无需涉及 LiveData 或 Flow。

class GymListViewModel : ViewModel() {
    val list1: List<String> = listOf("Item1", "Item2", "Item3")
    val list2: List<String> = listOf("Item4", "Item5", "Item6")
    val list3: List<String> = listOf("Item7", "Item8", "Item9")
}

class GymActivity : AppCompatActivity() {
    private val gymListViewModel: GymListViewModel by viewModels()

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_gym)

        val myList1 = gymListViewModel.list1
        val myList2 = gymListViewModel.list2
        val myList3 = gymListViewModel.list3

        // Use the lists as needed
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.