2013-01-19 50 views
0

有没有办法在同一个列表视图中显示可扩展列表和不可扩展列表? 我试图实现的是有可扩展的列表视图,但对于没有子项目的项目,我不想显示箭头展开箭头图标 我该如何做到这一点?请帮助 感谢如何显示可扩展列表视图和单列表视图

编辑:所有我想要的是能够隐藏指示箭头当组为空

回答

1

1)基本上,当组没有孩子时,你必须隐藏“展开箭头”。 您可以通过将GroupIndicator属性设置为null来实现此目的。

对于前:getExpandableListView().setGroupIndicator(null);

OR

2)通过检查孩子们指望你可以设置如下面的代码的指标,

if (getChildrenCount(groupPosition) == 0) { 
     indicator.setVisibility(View.INVISIBLE); 
    } else { 
     indicator.setVisibility(View.VISIBLE); 
     indicator.setImageResource(isExpanded ? R.drawable.list_group_expanded : R.drawable.list_group_closed); 
    } 

有关隐藏组指标的详细信息,你可以参考this link

OR

3)创建绘制文件夹中的文件group_indicator.xml

<item android:state_empty="true" android:drawable="@android:color/transparent"></item> 
<item android:state_expanded="true" android:drawable="@drawable/arrowdown"></item> 
<item android:drawable="@drawable/arrowright"></item> 

然后,定义如下面的代码扩展列表视图,

<ExpandableListView 
     android:id="@+id/android:list" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:groupIndicator="@drawable/group_indicator" 
     android:layout_weight="1" > 
    </ExpandableListView> 

希望这将解决你的问题。

+0

这确实是我正在寻找的。最后一个建议不会工作,因为它总是处于空状态,这是由android的限制(实际上他们说这是出于性能原因) – Snake

+0

但是,在您的第一个建议,将其设置为null将禁用整个列表 – Snake

1

是。您可以。

使用BaseExpandableListAdapter

这个类有下一个方法: getGroupTypeCount()和getGroupType(INT groupPosition)

,你应该重写。

以简单的方式,你有两种类型的项目。例如可扩展(类型1)和不可扩展(类型2)。

getGroupTypeCount()shoul return 2;

重写getGroupView(int groupPosition,boolean isExpanded,View convertView,ViewGroup parent) 在此方法中按项目的位置检查项目的类型。 如果item不可扩展,您应该生成View,它的外观与扩展与否无关。

我觉得这很简单。

+0

谢谢,不确定我是否在getgroupview方面得到了重点,并且一个示例会非常有用 – Snake