Java ExpandableListView更改指示器状态
我有一个ExpandableListView设置,工作非常正常,正如我所希望的,但有一个小问题,我希望组指示器(箭头)在打开或关闭组时展开和折叠。此功能虽然部分工作,但不完全正确 问题是,当我展开group1时,group2的指示符会自动变为不可见(文章末尾的图像)。如果我继续expsnd group3,那么group4的指示符将隐藏。在末端,只有终端组(即末端组)具有指示器,所有其他组的指示器不可见。我试图调试这非常努力,但可以找到任何原因,为什么会发生这种情况。也许你们都可以看看 这是activity\u main.xml(是的,我在这里使用的是Android导航抽屉) } 图片: 图像顺序是从右到左(很抱歉) 编辑:我还希望某些类别不要扩展。比如,如果有一个组没有子项,我想隐藏该组的指示符。我目前正在使用此代码Java ExpandableListView更改指示器状态,java,android,Java,Android,我有一个ExpandableListView设置,工作非常正常,正如我所希望的,但有一个小问题,我希望组指示器(箭头)在打开或关闭组时展开和折叠。此功能虽然部分工作,但不完全正确 问题是,当我展开group1时,group2的指示符会自动变为不可见(文章末尾的图像)。如果我继续expsnd group3,那么group4的指示符将隐藏。在末端,只有终端组(即末端组)具有指示器,所有其他组的指示器不可见。我试图调试这非常努力,但可以找到任何原因,为什么会发生这种情况。也许你们都可以看看 这是act
if(groupPosition == 0 || groupPosition == 5){
holder.imageView.setVisibility(View.GONE);
}
但是如何在statelist xml和setIndicatorBounds方法中隐藏指示符(如用户3664308所述)您应该为展开和折叠的组创建一个具有不同状态的可绘制组,如:
drawable/group_indicator.xml
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:state_expanded="true"
android:drawable="@drawable/ic_action_expand" />
<item
android:drawable="@drawable/ic_action_collapse" />
</selector>
然后通过设置其边界来调整指示器位置:
if(android.os.Build.VERSION.SDK_INT < android.os.Build.VERSION_CODES.JELLY_BEAN_MR2) {
mListView.setIndicatorBounds(myLeft, myRight);
} else {
mListView.setIndicatorBoundsRelative(myLeft, myRight);
}
if(android.os.Build.VERSION.SDK\u INT
如果我使用您的方法。我可以在特定的组位置隐藏指示器吗?@user3664308不可以。请更清楚地说明您下次想要的行为。@user3664308我已编辑了我的问题。看结尾。Thnankyou:)
@Override
public View getGroupView(int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) {
ViewHolder holder = null;
if (convertView == null) {
holder = new ViewHolder();
convertView = inflater.inflate(R.layout.drawer_group_item, null);
holder.imageView = (ImageView) convertView.findViewById(R.id.indicator);
holder.textView = (TextView) convertView.findViewById(R.id.group_title);
convertView.setTag(holder);
}else{
holder = (ViewHolder) convertView.getTag();
}
holder.textView.setText(parentItems.get(groupPosition));
if(groupPosition == 0 || groupPosition == 5){
holder.imageView.setVisibility(View.GONE);
}
if(isExpanded){
holder.imageView.setImageResource(R.drawable.ic_action_collapse);
}
if(!isExpanded){
holder.imageView.setImageResource(isExpanded?R.drawable.ic_action_collapse:R.drawable.ic_action_expand);
}
return convertView;
if(groupPosition == 0 || groupPosition == 5){
holder.imageView.setVisibility(View.GONE);
}
drawable/group_indicator.xml
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:state_expanded="true"
android:drawable="@drawable/ic_action_expand" />
<item
android:drawable="@drawable/ic_action_collapse" />
</selector>
mExpList.setIndicator(R.drawable.group_indicator.xml);
if(android.os.Build.VERSION.SDK_INT < android.os.Build.VERSION_CODES.JELLY_BEAN_MR2) {
mListView.setIndicatorBounds(myLeft, myRight);
} else {
mListView.setIndicatorBoundsRelative(myLeft, myRight);
}