使用 RecyclerView 的正确方法?
Correct approach on using RecyclerView?
我的任务是制定一个包含不同类型问题的列表,即一项调查。它可以包括 Integer-Answer-Question、Long-Text-Answer-Question 等类型。
为什么需要列表?因为对于使用该应用程序的人来说,向下滚动回答每个问题比向右滑动或做其他动作更好。
所以我面对使用ListView 或RecyclerView 的困境。我的研究给出了使用 recyclerView 并为我遇到的不同类型的问题设置 viewHolder 的最终结果。
当我意识到有一类问题与它有依赖关系时,斗争就来了;为何如此?如果你select一个选项,那么你必须"show"一些问题,如果你取消select这个选项,那么你必须再次"hide"。
问题是我需要知道每个问题对他们的 viewHolder 的引用,以便 "show" o "hide" 每个问题,但是如果回收者正在回收 viewHolder,那么它可以创建我的逻辑一团糟。
我的准时问题是:我是否在 RecyclerView 中使用了正确的组件?有什么方法可以访问具有唯一引用(如 ID 之类)的 viewHolder? .
如果您需要我展示一些代码,我会很乐意去做。
有价值的信息:
如果您对 notifyDataSetChanged() 的工作原理感兴趣,您可以访问此 link 以获取更多详细信息。
Minas mina的方法是正确的!
如果我没理解错的话,您需要在用户选择选项时隐藏某些类型的问题。
您对视图持有者应该做什么的理解不太正确。视图持有者缓存一堆视图,您稍后在 onBindViewHolder()
中使用到来自 模型对象 .
的 fill-in 数据
实际的模型对象应该在您的适配器中。在你的情况下,像
List<Question> questions
在 onBindViewHolder()
中,您 fill-in View holder 的字段包含来自 Question
对象的数据。
关于你的问题,你可以做的是在你的 recyclerView 适配器中设置一个标志,例如hideQuestionsOfTypeA
到 true
,然后在适配器上调用 notifyDatasetChanged()
。
绑定对象时,检查该标志是否为真,如果是,将需要隐藏的视图的可见性设置为GONE
。
我的任务是制定一个包含不同类型问题的列表,即一项调查。它可以包括 Integer-Answer-Question、Long-Text-Answer-Question 等类型。
为什么需要列表?因为对于使用该应用程序的人来说,向下滚动回答每个问题比向右滑动或做其他动作更好。
所以我面对使用ListView 或RecyclerView 的困境。我的研究给出了使用 recyclerView 并为我遇到的不同类型的问题设置 viewHolder 的最终结果。
当我意识到有一类问题与它有依赖关系时,斗争就来了;为何如此?如果你select一个选项,那么你必须"show"一些问题,如果你取消select这个选项,那么你必须再次"hide"。
问题是我需要知道每个问题对他们的 viewHolder 的引用,以便 "show" o "hide" 每个问题,但是如果回收者正在回收 viewHolder,那么它可以创建我的逻辑一团糟。
我的准时问题是:我是否在 RecyclerView 中使用了正确的组件?有什么方法可以访问具有唯一引用(如 ID 之类)的 viewHolder? .
如果您需要我展示一些代码,我会很乐意去做。
有价值的信息:
如果您对 notifyDataSetChanged() 的工作原理感兴趣,您可以访问此 link 以获取更多详细信息。
Minas mina的方法是正确的!
如果我没理解错的话,您需要在用户选择选项时隐藏某些类型的问题。
您对视图持有者应该做什么的理解不太正确。视图持有者缓存一堆视图,您稍后在 onBindViewHolder()
中使用到来自 模型对象 .
实际的模型对象应该在您的适配器中。在你的情况下,像
List<Question> questions
在 onBindViewHolder()
中,您 fill-in View holder 的字段包含来自 Question
对象的数据。
关于你的问题,你可以做的是在你的 recyclerView 适配器中设置一个标志,例如hideQuestionsOfTypeA
到 true
,然后在适配器上调用 notifyDatasetChanged()
。
绑定对象时,检查该标志是否为真,如果是,将需要隐藏的视图的可见性设置为GONE
。