我的任务是制定一份不同类型的问题清单,一项调查。它可能包括Integer-Answer-Question,Long-Text-Answer-Question等类型。
为什么需要成为一个清单?因为使用应用程序的人更好地滚动回答每个问题而不是向右滑动或做另一个动作。
所以我面对使用ListView或RecyclerView的困境。我的研究给出了使用recyclerView并为我提供的不同类型的问题提供viewHolder的最终结果。
当我意识到存在一种与其相关的依赖性问题时,斗争就来了;怎么会这样?如果你选择一个选项,那么你必须“显示”一些问题,如果你取消选择这个选项,那么你必须再次“隐藏”它。
问题是我需要知道每个问题的引用到他们的viewHolder以便“显示”或“隐藏”它们中的每一个,但如果回收者正在回收viewHolders那么它可能会造成我的逻辑混乱。
我的准确问题是:我在RecyclerView中使用了正确的组件吗?有没有办法访问一个带有唯一引用的viewHolder,比如id或者什么?
如果你需要我展示一些代码,我会愉快地做。
有价值的信息:
如果您对notifyDataSetChanged()的工作方式感兴趣,可以访问此link以获取更多详细信息。
Minas mina的方法是正确的!
如果我理解正确,您需要在用户选择选项时隐藏某些类型的问题。
您对视图持有者应该做什么的理解并不完全正确。视图持有者缓存一堆视图,您稍后在onBindViewHolder()
中使用这些视图来填充模型对象中的数据。
实际的模型对象应该在您的适配器中。在你的情况下,像
List<Question> questions
在onBindViewHolder()
中,您使用Question
对象中的数据填充View holder的字段。
至于你的问题,你可以做的是在你的recyclerView适配器中设置一个标志,例如hideQuestionsOfTypeA
到true
,然后在适配器上调用notifyDatasetChanged()
。
绑定对象时,检查该标志是否为true,如果是,则将GONE
的可见性设置为需要隐藏的视图。