我的应用包含网格视图,可从网上下载图片,然后在 imageview 上显示这些图片,直到那时 progressBars 可见。请注意,网格视图的所有图像视图都有自己的进度条。
下载完成后,会显示图像,然后进度条变为不可见。
我的代码: -
public class MyAdapter extends BaseAdapter {
@Override
public int getCount() {
// TODO Auto-generated method stub
return data.size();
}
@Override
public String getItem(int arg0) {
// TODO Auto-generated method stub
return data.get(arg0);
}
@Override
public long getItemId(int arg0) {
// TODO Auto-generated method stub
return arg0;
}
public class ViewHolder
{
ImageView image;
ProgressWheel pb;
}
@Override
public View getView(int arg0, View arg1, ViewGroup arg2)
{
View vi = arg1;
final ViewHolder holder;
if(arg1==null)
{
LayoutInflater inflater = (LayoutInflater) itemgridsub.this.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
vi = inflater.inflate(R.layout.gridsubitems, arg2,false);
holder = new ViewHolder();
holder.pb=(ProgressWheel)vi.findViewById(R.id.pbsub);
holder.image=(ImageView)vi.findViewById(R.id.gridsub_iv);
Typeface type = Typeface.createFromAsset(getAssets(), "fonts/comic.ttf");
vi.setTag(holder);
}
else{
holder=(ViewHolder)vi.getTag();
}
Picasso.with(getApplicationContext())
.load(link)
.fit().centerCrop().into(holder.image,new Callback(){
@Override
public void onError() {
// TODO Auto-generated method stub
Toast.makeText(getApplicationContext(), "Oops Downloading Failed.\nPlease Try Again.", Toast.LENGTH_LONG);
}
@Override
public void onSuccess() {
// TODO Auto-generated method stub
holder.pb.setVisibility(View.INVISIBLE);
}
});
return vi;
}
}
我的问题: -
活动开始,下载开始,所有进度条都显示在imageview上,然后在下载图像后,它们将显示在网格视图中。但是在位置0,即进度条一直显示的第一个网格项。
所有其他项目仅显示图像,因为其进度条不可见但第一项显示图像以及进度条。
为什么这只发生在第一个进度条上?这里的错误是什么。
感谢。