我有一个GridView加载了一堆自定义视图。当我向上或向下滚动时,之前屏幕显示的视图现在被替换为不同的视图。任何想法为什么会这样?
public View getView(int position, View convertView, ViewGroup parent) {
ImageView imageView;
LayoutInflater inflater = (LayoutInflater)mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
RelativeLayout rLayout = (RelativeLayout)inflater.inflate(R.layout.collection_item, parent, false);
if (convertView == null) { // if it's not recycled, initialize some attributes
ImageView movieImage = (ImageView)rLayout.findViewById(R.id.movieImage);
TextView movieTitle = (TextView)rLayout.findViewById(R.id.movieTitle);
TextView movieDescription = (TextView)rLayout.findViewById(R.id.movieDescription);
movieImage.setImageResource(movies[position]);
movieTitle.setText(movieNames[position]);
movieDescription.setText(movieDescriptions[position]);
} else {
rLayout = (RelativeLayout) convertView;
}
return rLayout;
}
答案 0 :(得分:3)
没关系我弄清楚了。只需将所有初始化代码放入(convertView == null)部分,将if / else块放在setter方法之后。
答案 1 :(得分:0)
这可能是因为图像加载尝试使用Picasso library
解决方案是代替使用位图直接加载图像使用一个名为Picasso的超棒库它只是超级快我知道你真的很喜欢这个你可以这样做吗
将picasso jar文件添加到您的项目中(在此处下载picasso jar文件) 使用picasso像这样加载图像
Picasso.with(context).load(new File(title)).centerCrop()
.resize(150, 150).error(R.drawable.ic_launcher).into(image);
其中title是您要加载的图像路径。裁剪,调整大小,错误是可选的。