【问题标题】:is it possible to impliment expandablelistview in which each child has different item/layouts是否可以实现每个孩子都有不同的项目/布局的可扩展列表视图
【发布时间】:2014-03-19 19:41:34
【问题描述】:

首先,我是编程新手。是否可以在每个具有不同布局的子项中创建自定义可扩展列表?如果是,请帮帮我!

  1. 有三个父母,每个都有一个文本视图和一个开关。

    1. 第一个父母的孩子有:

      1. 文本视图
      2. 搜索栏
      3. 编辑文本
    2. 第二个父母的孩子有:

      1. 文本视图
      2. 时间选择器
      3. 文本视图
      4. 编辑文本
    3. 第三个父母的孩子有:

      1. 文本视图
      2. 编辑文本

请检查这个 photoshop 模型,这是我想要暗示的:

  • 我应该为每个孩子创建三个不同的 XML,还是应该由适配器在这里发挥作用?
  • 如果无法使用可扩展列表,我该如何实现?
  • 任何指导建议,教程表示赞赏。 :)

【问题讨论】:

  • 是的,你可以,但你必须通过单独考虑位置来扩大相应的布局
  • 谢谢兄弟!我有点理解
  • @PrasanthS,很抱歉在一个不相关的问题上标记您,但是在执行标记 wiki 编辑时,请不要只编辑字典定义而不查看标签的实际使用方式。例如,您最近提交了对 cv2 的编辑,其中唯一的用途与您提议的 wiki 完全不同。在这种情况下,问题被编辑为使用更正确的标签。您可以执行该编辑,而不是创建误导性的 wiki 摘录。请谨慎编辑标签!

标签: android layout expandablelistview


【解决方案1】:

您可以在自定义适配器中,但您必须创建相应的布局。在您的 getView() 方法中使用类似以下内容。

switch (groupPosition) {
     case 0:
         convertView = inflater.inflate(R.layout.group1, null);
         break;
     case 1:
         convertView = inflater.inflate(R.layout.group2, null);
         break;
}

【讨论】:

  • 感谢兄弟的回复!所以我必须为每个孩子创建三个布局?像 child_1.xml、child_2.xml、child_3.xml 吗?
【解决方案2】:

当您使用组的子项的两种类型的视图时。所以你必须重写以下两个方法

final int CHILDVIEW_ONE = 0;
final int CHILDVIEW_TWO = 1;
final int CHILDVIEW_TYPE_COUNT = CHILDVIEW_TWO + 1;
@Override
public int getChildTypeCount() {
    return CHILDVIEW_TYPE_COUNT;
}


@Override
public int getChildType(int groupPosition, int childPosition)
{
      if(childObject instanceOf item1)
         return CHILDVIEW_ONE;
      else if (childObject instance item2)
         return CHILDVIEW_TWO;
return super.getChildType(int groupPosition, int childPosition);
}

然后在您的getChildView() 中执行以下操作:

public View getChildView(int groupPosition, int childPosition,
            boolean isLastChild, View convertView, ViewGroup parent) {
     ....
     if(childObject instanceOf item1){
         //handle the first child view
     }else if (childObject instanceOf item2){
         //handle the second child view
     }
     ....
}

您必须同时覆盖 getChildType 和 getChildTypeCount 才能使用视图持有者的概念,从而优化绘制滚动视图的内存性能

【讨论】:

    猜你喜欢
    • 2016-02-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多