是否可以实现expandablelistview,其中每个子项具有不同的项目/布局

时间:2014-02-19 12:54:44

标签: android layout expandablelistview

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

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

    1. 第一位家长的孩子有:

      1. textview
      2. 搜索条
      3. 的EditText
    2. 第二位家长的孩子有:

      1. 的TextView
      2. timepicker
      3. textview
      4. 的EditText
    3. 第三位家长的孩子有:

      1. 的TextView
      2. 的EditText
  2. 请检查这个photoshop样机,这是我想要暗示的:

    https://www.dropbox.com/s/8bqii0d4vt43wa8/changed%20layout.jpg

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

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

当您使用两种类型的儿童项目视图时。所以你必须覆盖以下两种方法

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,才能使用优化Memory Peroformance绘制滚动视图的视图概念