ExpandableListView中的Android开关

ExpandableListView中的Android开关,android,toggle,expandablelistview,android-switch,Android,Toggle,Expandablelistview,Android Switch,我有一个带有自定义适配器的ExpandableListView。每个父级(或组)都有一个文本视图,每个子级(项目)都有一个文本视图和一个开关。My ChildModel有一个字符串名称(TextView)和一个字符串[]选项(switch)。然而,我相信我的布局没有得到适当的膨胀,因为当我展开我的ListView时,开关上的值会改变!这是我的密码 @Override public View getChildView(int groupPosition, int childPosi

我有一个带有自定义适配器的ExpandableListView。每个父级(或组)都有一个文本视图,每个子级(项目)都有一个文本视图和一个开关。My ChildModel有一个字符串名称(TextView)和一个字符串[]选项(switch)。然而,我相信我的布局没有得到适当的膨胀,因为当我展开我的ListView时,开关上的值会改变!这是我的密码

    @Override
    public View getChildView(int groupPosition, int childPosition,
            boolean isLastChild, View convertView, ViewGroup parent) {

        View v = convertView;

        if (v == null) {
            LayoutInflater inflater = (LayoutInflater)ctx.getSystemService
                    (Context.LAYOUT_INFLATER_SERVICE);
            v = inflater.inflate(R.layout.listview_row_child, parent, false);
        }

        TextView itemName = (TextView) v.findViewById(R.id.itemName);
        Swith itemDescr = (Switch) v.findViewById(R.id.itemDescr);

        ChildModel det = catList.get(groupPosition).getItemList().get(childPosition);

        itemName.setText(det.getName());
//      itemDescr.setText(det.getChoices()[0] + det.getChoices()[1]);
        itemDescr.setTextOff(det.getChoices()[0]);
        itemDescr.setTextOn(det.getChoices()[1]);

        return v;

    }
我不明白的是,如果我将开关改为文本视图,并使用上面显示的行,它会正确显示。有人能给我解释一下原因吗? 谢谢

请注意,当我切换到开关时,工具栏方向现在显示“是/否”,而不是“左/右”,并且我的测量单位甚至不再显示“米/英尺”


根据您提供的代码,很难准确地说出问题所在。下面的链接提供了一个执行可展开列表视图的示例

注意充气

inflater.inflate(R.layout.child_item, null);
它没有指定根

目前,这是我唯一能想到的。这个链接可能也有帮助,因为它看起来很相似。


还有一件事我注意到了。是/否的开关是否总是组中的最后一个?如果只有一个孩子,它是否总是显示是/否?如果有多个孩子,最后一个是/否?

itemDescr是开关还是文本视图?我知道您一直在更改它以进行测试,但上面的示例将其设置为textview,然后设置textoff和texton。啊,对不起。我忘了把itemDescr改成开关。如果我将itemDescr设置为TextView并打印出两个值,它会起作用,但是当我将itemDescr设置为开关时,两个choice[]值会混合在一起,您的意思是它们只是交换了吗?在这种情况下,您是否可以将textoff设置为[1]并将texton设置为[0]?我编辑了我的帖子。我将尝试添加屏幕快照不确定这是否有帮助,但不是v=inflater.inflate(R.layout.listview_row_child,parent,false);,try v=充气机。充气(R.layout.listview\u row\u child,null);我正在查看代码中的内容,而不是使用父级。值得一试。