Android Gridview每次滚动时都会刷新其内容
我正在建立一个自定义的gridview,并使用毕加索进行图像下载。我听说毕加索将自动缓存。但当我滚动时,图像会刷新。我想我犯了一个错误。请检查我的代码并帮助我找到错误。我已经在下面发布了我的代码Android Gridview每次滚动时都会刷新其内容,android,gridview,scroll,picasa,Android,Gridview,Scroll,Picasa,我正在建立一个自定义的gridview,并使用毕加索进行图像下载。我听说毕加索将自动缓存。但当我滚动时,图像会刷新。我想我犯了一个错误。请检查我的代码并帮助我找到错误。我已经在下面发布了我的代码 public class MoviesGridAdapter extends BaseAdapter{ private Context context; private ArrayList<Movie> movies; private LayoutInflater inf
public class MoviesGridAdapter extends BaseAdapter{
private Context context;
private ArrayList<Movie> movies;
private LayoutInflater inflater;
private View gridView;
private final String BASE_IMAGE_URL = ""; // unable to expose the link
private Picasso mPicasso;
public MoviesGridAdapter(Context context,ArrayList<Movie> movies) {
this.context = context;
this.movies = movies;
mPicasso = Picasso.with(context);
mPicasso.setIndicatorsEnabled(true);
}
@Override
public int getCount() {
return movies.size();
}
@Override
public Object getItem(int position) {
return null;
}
@Override
public long getItemId(int position) {
return 0;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
gridView = convertView;
ViewHolder holder;
// when the view got recycled
if(gridView == null){
inflater = (LayoutInflater) context.getSystemService(context.LAYOUT_INFLATER_SERVICE);
gridView = new View(context);
holder = new ViewHolder();
gridView = inflater.inflate(R.layout.grid_inner_layout,null);
holder.movieView = (ImageView) gridView.findViewById(R.id.imageView);
gridView.setTag(holder);
} else {
// if the view still available
gridView = convertView;
holder = (ViewHolder) gridView.getTag();
}
// loading the image with picasso image loader
mPicasso.
.load(BASE_IMAGE_URL + movies.get(position).getPosterUrl())
.resize(500, 750)
.error(R.mipmap.ic_launcher)
.into(holder.movieView);
return gridView;
}
static class ViewHolder{
ImageView movieView;
}
}
公共类MoviesGridAdapter扩展了BaseAdapter{
私人语境;
私人电影;
私人充气机;
私有视图;
私有最终字符串BASE_IMAGE_URL=”“//无法公开链接
私人毕加索;
公共MoviesGridAdapter(上下文、ArrayList电影){
this.context=上下文;
这部电影=电影;
mPicasso=毕加索。带有(上下文);
mPicasso.SetIndicatorEnabled(真);
}
@凌驾
public int getCount(){
返回电影。大小();
}
@凌驾
公共对象getItem(int位置){
返回null;
}
@凌驾
公共长getItemId(int位置){
返回0;
}
@凌驾
公共视图getView(int位置、视图转换视图、视图组父视图){
gridView=convertView;
视窗座;
//当风景被回收利用时
如果(gridView==null){
充气器=(LayoutFlater)context.getSystemService(context.LAYOUT\u充气器\u服务);
gridView=新视图(上下文);
holder=新的ViewHolder();
gridView=充气机。充气(右布局。网格内部布局,空);
holder.movieView=(ImageView)gridView.findViewById(R.id.ImageView);
gridView.setTag(支架);
}否则{
//如果视图仍然可用
gridView=convertView;
holder=(ViewHolder)gridView.getTag();
}
//使用毕加索图像加载器加载图像
卡索。
.load(基本图片URL+电影.get(位置).getPosterUrl())
.调整大小(500750)
.错误(R.mipmap.ic_启动器)
.进入(持有者.电影视图);
返回gridView;
}
静态类视窗夹{
ImageView电影视图;
}
}
gridview xml
gridview项目布局xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<ImageView
android:layout_width="wrap_content"
android:layout_height="250dp"
android:id="@+id/imageView"
android:background="@android:drawable/screen_background_dark_transparent"/>
</LinearLayout>
谢谢 你能发送你的GridView XML代码吗?@pkBhati我添加了XML文件你能发送你的GridView XML代码吗?@pkBhati我添加了XML文件
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<ImageView
android:layout_width="wrap_content"
android:layout_height="250dp"
android:id="@+id/imageView"
android:background="@android:drawable/screen_background_dark_transparent"/>
</LinearLayout>