我想在活动中使用的虚拟机上有三个
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()
但如果我没记错的话,虚拟机不应该有返回方法,它们只是更新状态。
我是根据最佳实践来问这个问题的。
谢谢
如果列表是静态且不可变的,您可以直接从 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
}
}