我有一个带有两个片段的测验应用程序,用于我在ViewPager中的两个测验模式。对于每个片段,除了其他内容之外,我还通过迭代遍历所有类别的while循环中的XML来扩展线性布局来动态创建列表。包含此列表的这种布局在两种模式中都是相同的,它是片段的其余部分不同,因此需要两个单独的页面。
问题因此是我在每个片段中进行两次夸大布局的代价高昂的过程。我只想这样做一次并使用它两次。
我考虑过的两个解决方案:
问题:
问题:
但这确实意味着我可以轻松访问CheckBox并迭代设置oncheckedchangedlisteners
提前非常感谢:)如果您需要更多信息或其他任何信息,请直接询问!
答案 0 :(得分:1)
我通过从XML中扩展linearlayouts来动态创建列表 在一个循环中循环遍历所有类别。
这表示ListView
。
在父活动中使用arraylist。在每个中访问它 片段并以这种方式将布局添加到父级。
此解决方案从一开始就不起作用,因为ViewPager
中有两个片段会产生不同的行为。如果片段不在ViewPager
中,您可以构建一种机制,用于将这些视图存储在列表中,然后动态分离//将它们从片段视图中附加。但是将视图存储在列表中(并且始终将它们存储在内存中)加上管理其状态的麻烦并不值得。
在父活动中使用适配器,通过。访问它 片段,然后使用ExpandableListView。
为什么只使用一个适配器而不是两个,每个片段一个(所以它们是独立的)?我也会在片段本身中实现适配器。
我使用复选框来选择类别。这两个片段处理 点击不同。由于我的知识有限,我不知道如何 实现这一点。我知道我可以膨胀自定义布局但是然后 如何在片段中设置监听器?
不太确定,但如果您正在讨论从“行”布局访问CheckBoxe
并根据这两个片段对用户操作采取不同的行为,则可以非常轻松地实现基本适配器类。该基本适配器类将处理通用逻辑,但您还将在CheckBox
操作(OnCheckedChangeListener
)中调用一个抽象方法。该基本适配器的两个子子句(用于两个片段)将各自实现该抽象方法,并使它们自己的逻辑彼此独立。
我的一些类别已分组,其他类别是独立项目。怎么做 我删除了这些项目中的箭头?
如上所述,这可以通过实施智能适配器来完成。