可展开列表视图显示组位置的错误标题



当我展开和折叠可展开列表视图中的组时,其上的文本视图会在所有其他组之间更改其文本

这是我的代码:

@Override
public View getGroupView(int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) {
    GroupViewHolder vh = null;
    if (convertView == null) {
        convertView = inflater.inflate(R.layout.expandable_list_group_row, parent, false);
        vh = new GroupViewHolder();
        vh.textView = (TextView) convertView.findViewById(R.id.groupHeader);
        convertView.setTag(R.string.tag_group);
    } else {
        vh = (GroupViewHolder) convertView.getTag(R.string.tag_group);
    }
    if(vh!=null) {
    vh.textView.setText(groupHeaders[groupPosition]);
    }
    return convertView;
}

里面的孩子是正确的,但小组似乎改变了位置(只有文本视图,而不是他们的位置)

我该如何解决它?它只发生在安卓2.3.6上

您需要处理您的 else 情况,因为视图回收会导致旧标头显示不正确。

我遇到了同样的问题,这是一个工作版本:

@Override
public View getGroupView(int groupPosition, boolean isExpanded, View convertView, ViewGroup parent)
{
    ViewHolderGroupItem viewHolder;
    String groupTitle = Integer.toString((int)getGroup(groupPosition));
    if (convertView == null)
    {
        viewHolder = new ViewHolderGroupItem();
        LayoutInflater inflater = (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        convertView = inflater.inflate(R.layout.my_group_header, null);
        viewHolder.txtTitle = (TextView) convertView.findViewById(R.id.my_group_year);
        //  cache layout reference
        convertView.setTag(viewHolder);
    }
    else
    {
        viewHolder = (ViewHolderGroupItem) convertView.getTag();
    }
    viewHolder.txtTitle.setText(groupTitle);
    return convertView;
}

您的问题是视图回收。您需要做的是从代码中删除if (convertView == null)部分。仅使用convertView = inflater.inflate(R.layout.expandable_list_group_row, parent, false); vh = new GroupViewHolder(); vh.textView = (TextView) convertView.findViewById(R.id.groupHeader); convertView.setTag(R.string.tag_group);,然后它将不再检查视图是否可回收,并且正确的视图将保持在正确的位置。

相关内容

最新更新