首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Android Jetpack递归导航

Android Jetpack递归导航
EN

Stack Overflow用户
提问于 2020-01-17 02:36:15
回答 1查看 226关注 0票数 3

我正在试用Android向日葵应用程序。我要求展示一份主题清单。当单击某个主题时,我希望递归地显示子主题。我试图在Android向日葵中的“植物列表”视图中对此进行建模。

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

  1. On topic item的单击处理程序,使用父主题id更新视图模型,并在保留在同一片段中的同时允许ui更新。在这种方法中,如何正确地支持back按钮?如何从列表项的单击侦听器访问列表的视图模型?
  2. 打开具有正确导航参数的新片段。在这种方法中,如何设置导航,使新片段只替换保存列表的片段。当我尝试这种方法时,它正在替换向日葵应用程序的整个选项卡布局。

请帮帮忙。

EN

回答 1

Stack Overflow用户

发布于 2022-11-21 03:54:53

我也有这个问题。现在,我已经通过使用navArgs和viewModel找到了一个解决方案。

PlantListFragment.kt

代码语言:javascript
复制
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

代码语言:javascript
复制
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
        }
    }
}

祝好运!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59780463

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档