0

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

这是我的代码:

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

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

我该如何解决?附言。它只发生在 android 2.3.6

4

3 回答 3

0

您需要注意其他情况,因为视图回收会导致旧标题显示不正确。

于 2013-10-28T17:35:58.533 回答
0

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

@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;
}
于 2017-05-27T15:17:15.240 回答
0

您的问题是视图回收。您需要做的是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);它不会检查视图是否可回收,并且正确的视图将保留在正确的位置。

于 2020-06-15T06:51:58.967 回答