Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/214.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java ExpandableListView更改指示器状态_Java_Android - Fatal编程技术网

Java ExpandableListView更改指示器状态

Java ExpandableListView更改指示器状态,java,android,Java,Android,我有一个ExpandableListView设置,工作非常正常,正如我所希望的,但有一个小问题,我希望组指示器(箭头)在打开或关闭组时展开和折叠。此功能虽然部分工作,但不完全正确 问题是,当我展开group1时,group2的指示符会自动变为不可见(文章末尾的图像)。如果我继续expsnd group3,那么group4的指示符将隐藏。在末端,只有终端组(即末端组)具有指示器,所有其他组的指示器不可见。我试图调试这非常努力,但可以找到任何原因,为什么会发生这种情况。也许你们都可以看看 这是act

我有一个ExpandableListView设置,工作非常正常,正如我所希望的,但有一个小问题,我希望组指示器(箭头)在打开或关闭组时展开和折叠。此功能虽然部分工作,但不完全正确

问题是,当我展开group1时,group2的指示符会自动变为不可见(文章末尾的图像)。如果我继续expsnd group3,那么group4的指示符将隐藏。在末端,只有终端组(即末端组)具有指示器,所有其他组的指示器不可见。我试图调试这非常努力,但可以找到任何原因,为什么会发生这种情况。也许你们都可以看看

这是activity\u main.xml(是的,我在这里使用的是Android导航抽屉)

}

图片:

图像顺序是从右到左(很抱歉)

编辑:我还希望某些类别不要扩展。比如,如果有一个组没有子项,我想隐藏该组的指示符。我目前正在使用此代码

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);
}