Android 2.3:滚动后GridView乱序

时间:2011-07-13 15:01:23

标签: android gridview scroll

我有一个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;
}

2 个答案:

答案 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是您要加载的图像路径。裁剪,调整大小,错误是可选的。