gpt4 book ai didi

Android Jetpack 递归导航

转载 作者:行者123 更新时间:2023-12-05 07:14:43 25 4
gpt4 key购买 nike

我正在试用 Android Sunflower 应用程序。我需要显示主题列表。单击主题时,我想递归地显示子主题。我试图围绕 Android 向日葵中的植物 ListView 对其进行建模。

处理这种递归的最佳方法是什么?我有两个想法。

  1. 在主题项的点击处理程序上,使用父主题 ID 更新 View 模型,并让 UI 更新,同时保持在同一 fragment 中。在这种方法中,如何正确支持后退按钮?如何从列表项的点击监听器访问列表的 View 模型?

  2. 使用正确的导航参数打开一个新 fragment 。在这种方法中,如何设置导航以使新 fragment 仅替换包含列表的 fragment 。当我尝试这种方法时,它替换了 Sunflower 应用的整个选项卡布局。

请帮忙。

最佳答案

我也遇到过这个问题。现在,我找到了同时使用 navArgs 和 viewModel 的解决方案。

PlantListFragment.kt

class PlantListFragment : Fragment() {
private val viewModel by inject<PlantListViewModel>()
private val args by navArgs<PlantListFragmentArgs>()

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
// Pass nav arg (list) to view model to initialize.
// Assuming you already setup the argument in the navigation file properly.
viewModel.setupFromNavArgs(args.list)
}

fun setupList() {
viewModel.list.observe(viewLifeCycleOwner) {
// Do the list view setup with `it`
}
}
}

PlantListViewModel.kt

class PlantListViewModel : ViewModel() {

private val _list = MutableLiveData<List<Plant>>()
val list: LiveData<List<Plant>> = _list
fun setupFromNavArgs(list: List<Plant>) {
if (_list.value == null) {
_list.value = list
}
}
}

祝你好运!

关于Android Jetpack 递归导航,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59780463/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com