当我展开并折叠可扩展列表视图中的组时,其上的textview会在所有其他组之间更改其文本
这是我的代码:
@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;
}
里面的孩子是正确的,但这些团体似乎改变了地方(只有文字观点,而不是他们的位置)
我该如何解决? PS。它只发生在android 2.3.6
上答案 0 :(得分:0)
您需要处理其他情况,因为查看回收导致旧标头显示不正确。
答案 1 :(得分: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;
}
答案 2 :(得分: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);
,它将不会检查视图是否可以回收,并且正确的视图将保留在正确的位置。