GridView 行为怪异;重复文本视图
Posted
技术标签:
【中文标题】GridView 行为怪异;重复文本视图【英文标题】:GridView behaves weird; duplicates TextView 【发布时间】:2013-06-20 20:41:49 【问题描述】:所以我得到了一个显示一些标志的 GridView。每个 GridView 单元由一个 ImageView 和一个 TextView 组成。开始时仅显示 ImageView。当 GridView 中的位置 1 和 240 加载时,TextView 应该变得可见。
@Override
public View getView(int position, View convertView, ViewGroup parent)
ViewHolder mVHolder;
if (convertView == null)
convertView = LayoutInflater.from(mContext).inflate(R.layout.grid_images, parent, false);
mVHolder = new ViewHolder();
mVHolder.mImageView = (ImageView) convertView.findViewById(R.id.gridview_img);
mVHolder.mTextView = (TextView) convertView.findViewById(R.id.textas);
mVHolder.mTextView.setVisibility(View.INVISIBLE);
convertView.setTag(mVHolder);
else
mVHolder = (ViewHolder) convertView.getTag();
int img = Flagcontainer.flags.get(position).getFlagThumb();
Picasso.with(mContext).load(img).into(mVHolder.mImageView);
if (position == 1 || position == 240)
mVHolder.mTextView.setVisibility(View.VISIBLE);
return convertView;
class ViewHolder
ImageView mImageView;
TextView mTextView;
问题:
当一直滚动到 GridView 的底部时,将显示单元格 240 的 TextView。如果向上滚动,则会显示除 1 和 240 以外的其他单元格的 TextView。
我的代码有什么问题?
观看视频以可视化问题
视频: http://www.youtube.com/watch?v=ONLLvS9ISJQ
【问题讨论】:
【参考方案1】:正如 el_bhm 指出的那样
if (position == 1 || position == 240)
mVHolder.mTextView.setVisibility(View.VISIBLE);
需要一个 else where mVHolder.mTextView.setVisibility(View.GONE);
【讨论】:
这是可见性。在创建或获取 ViewHolder 之后,需要在每个 getView 处设置它。在 ViewHolder 中再次查找视图部分违背了这种模式的目的,不是吗? @el_bhm 是的,我想念这个问题 谢谢大家!我不知道我是怎么错过的。以上是关于GridView 行为怪异;重复文本视图的主要内容,如果未能解决你的问题,请参考以下文章
Sheet弹出视图在SwiftUI中“怪异”行为的解决(第一次弹出视图的可选属性总得到nil值)
Sheet弹出视图在SwiftUI中“怪异”行为的解决(第一次弹出视图的可选属性总得到nil值)
Javascript怪异日期行为于2017-03-26。一天不能增加。为什么? [重复]