为什么 ExpandableListView 更改 ChildView 设置(Android)?

2024-05-16

我对使用 ExpandableListView 有疑问。就我而言,我有两个组视图和两个子视图,而子视图由一个带有多个按钮、文本视图等的相对布局组成。例如,当首先扩展第二组并对视图持有者进行一些更改并随后扩展第一组时,先前所做的更改也会自动应用于第一组的子视图,为什么会发生这种情况?

我在调用视图时记录了:

// 创建其中包含 ExpandableListView 的 Fragment,转换第 0 组和第 1 组的视图为空

ConvertView == null,GroupView,groupPosition 0

ConvertView == null,GroupView,groupPosition 1

// 先展开第二组,Child的convertView为null

getChildView:组位置1,子位置0 转换View == null,ChildView

// 展开第一组后,Child 的 ConvertView 不再为 null

getChildView:组位置0,子位置0 转换View!= null,ChildView

看起来它正在获取第二组孩子的convertView,标签是否无法识别要获取的女巫视图?

EDIT:

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

    if (LOG)
        Log.d(TAG, "getChildView: group position " + groupPosition + ", child position " + childPosition);

    final ViewHolder viewHolder;
    if (convertView == null) {
        viewHolder = new ViewHolder();
        LayoutInflater infalInflater = (LayoutInflater) this._context
                .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        convertView = infalInflater.inflate(R.layout.list_item_channel, null);

        if (LOG) Log.d(TAG, "convertView == null, ChildView");

        // add all the viewholders (...)
        viewHolder.connect = (ToggleButton) convertView.findViewById(R.id.connect_tog);
        viewHolder.channelOnOff = (Switch) convertView.findViewById(R.id.channel_switch);
        convertView.setTag(viewHolder);

    } else {
        if (LOG) Log.d(TAG, "convertView != null, ChildView");
        viewHolder = (ViewHolder) convertView.getTag();
    }

    return convertView;

}

不,我不会通过外部适配器更改视图,而且 ViewHolder 类也是静态类。

非常感谢和欢呼, 平古


None

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么 ExpandableListView 更改 ChildView 设置(Android)? 的相关文章

随机推荐