0

我有一个带有自定义适配器的 ExpandableListView。每个父级(或组)都有一个 TextView,每个子级(项目)都有一个 textview 和一个开关。我的 ChildModel 有一个字符串名称 (TextView) 和一个字符串 [] 选项(开关)。但是,我相信我的布局没有正确膨胀,因为当我展开 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;

    }

我无法弄清楚的部分是,如果我将 Switch 更改为 TextView 并使用上面注释掉的行,它会正确显示。有人可以向我解释为什么吗?谢谢!

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

在此处输入图像描述 在此处输入图像描述

4

1 回答 1

0

使用您提供的代码,很难准确判断问题出在哪里。下面的链接提供了一个执行可扩展列表视图的示例。

http://theopentutorials.com/tutorials/android/listview/android-expandable-list-view-example/

注意充气。

inflater.inflate(R.layout.child_item, null);

它没有指定根。

目前,这就是我能想到的。这个链接也可能有帮助,因为它看起来很相似。 ListView 中的 ToggleButton 奇怪行为

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

于 2014-04-10T19:54:26.933 回答