如何在gridview中设置图像的邮件作为

问题描述:

我有gridview用于显示图像的数量,就像android手机中的一个画廊。如何在gridview中设置图像的邮件作为

但是,当我向下滚动到gridview的下部显示图像的位置正在改变。

我的自定义适配器..

class MyCustomArrayAdapter extends ArrayAdapter<ModelBean> { 

    private final Activity context; 
    private final List<ModelBean> listDownload; 

    public MyCustomArrayAdapter(Activity context, List<ModelBean> list) { 
     super(context, R.layout.gridview_layout, list); 

     this.context = context; 
     this.listDownload = list; 
    } 

    static class ViewHolder { 
     protected ImageView imageView; 
     protected ProgressBar pb; 
     protected ModelBean mb; 
    } 

    @SuppressLint("InflateParams") 
    @Override 
    public View getView(int position, View convertView, ViewGroup parent) 
    { 
     ViewHolder holder; 
     if (convertView == null) 
     { 
      LayoutInflater inflator = context.getLayoutInflater(); 
      convertView = inflator.inflate(R.layout.gridview_layout, null); 

      holder = new ViewHolder(); 
      holder.imageView = (ImageView) convertView.findViewById(R.id.imageView); 
      holder.imageView.setVisibility(View.GONE); 
      holder.pb = (ProgressBar) convertView.findViewById(R.id.progressBar1); 

      convertView.setTag(holder); 
     } else { 
      holder = (ViewHolder) convertView.getTag(); 
     } 

     holder.imageView.setTag(listDownload.get(position).getImage()); 
     holder.imageView.setId(position); 

     PbAndImageBean pb_and_imageBean = new PbAndImageBean(); 
     pb_and_imageBean.setImg(holder.imageView); 
     pb_and_imageBean.setPb(holder.pb); 
     pb_and_imageBean.setModelBean(listDownload.get(position)); 
     new DownloadImageAsyncTask(context).execute(pb_and_imageBean); 

     holder.imageView.setOnClickListener(new OnImageClickListener(position)); 

     return convertView; 
    } 

class OnImageClickListener implements OnClickListener { 

    int _postion; 

    // constructor 
    public OnImageClickListener(int position) { 
     this._postion = position; 
    } 

    @Override 
    public void onClick(View v) { 
     // on selecting grid view image 
     // launch full screen activity 
     Intent i = new Intent(context, FullScreenViewActivity.class); 
     i.putExtra("position", _postion); 
     context.startActivity(i); 
    } 
} 
} 

我已经使用了延迟加载的概念从服务器获取图像, 所以单个图像获取的单次下载。 但从逻辑上说,它不会影响我的问题。

我想要做的是,当图像下载到任何位置时,它应该锁定在特定的位置,将解决我的问题。

+0

最后..通用图像加载器解决我的问题...谢谢大家.... – 2014-09-10 12:03:29

尝试像这个 -

class MyCustomArrayAdapter extends ArrayAdapter<ModelBean> { 

    private final Activity context; 
    private final List<ModelBean> listDownload; 

    public MyCustomArrayAdapter(Activity context, List<ModelBean> list) { 
     super(context, R.layout.gridview_layout, list); 
     this.context = context; 
     this.listDownload = list; 
    } 

    @SuppressLint("InflateParams") 
    @Override 
    public View getView(int position, View convertView, ViewGroup parent) { 
     LayoutInflater inflator = context.getLayoutInflater(); 
     convertView = inflator.inflate(R.layout.gridview_layout, null); 
     ImageView imageView = (ImageView) convertView 
       .findViewById(R.id.imageView); 
     imageView.setVisibility(View.GONE); 
     ProgressBar pb = (ProgressBar) convertView 
       .findViewById(R.id.progressBar1); 
     imageView.setTag(listDownload.get(position).getImage()); 
     imageView.setId(position); 
     PbAndImageBean pb_and_imageBean = new PbAndImageBean(); 
     pb_and_imageBean.setImg(imageView); 
     pb_and_imageBean.setPb(pb); 
     pb_and_imageBean.setModelBean(listDownload.get(position)); 
     new DownloadImageAsyncTask(context).execute(pb_and_imageBean); 
     imageView.setOnClickListener(new OnImageClickListener(position)); 
     return convertView; 
    } 

    class OnImageClickListener implements OnClickListener { 

     int _postion; 
     // constructor 
     public OnImageClickListener(int position) { 
      this._postion = position; 
     } 

     @Override 
     public void onClick(View v) { 
      // on selecting grid view image 
      // launch full screen activity 
      Intent i = new Intent(context, FullScreenViewActivity.class); 
      i.putExtra("position", _postion); 
      context.startActivity(i); 
     } 
    } 
} 
+0

后滚动它消失下载的图像... – 2014-09-05 10:07:51

+0

非常接近解决,但... ... ..当我向下滚动它消失图像...请帮助... – 2014-09-05 10:29:48

+0

@Priyanka你在哪里? – Piyush 2015-10-20 11:13:58

更改这一个。

View view = null; 
    ViewHolder holder; 
    if (convertView == null) { 
     LayoutInflater inflator = context.getLayoutInflater(); 
     holder = new ViewHolder(); 
     view = inflator.inflate(R.layout.gridview_layout, null); 
     final ViewHolder viewHolder = new ViewHolder(); 
     viewHolder.imageView = (ImageView) view.findViewById(R.id.imageView); 
     viewHolder.imageView.setVisibility(View.GONE); 
     viewHolder.pb = (ProgressBar) view.findViewById(R.id.progressBar1); 
     view.setTag(viewHolder); 
    } else { 
     holder = (ViewHolder) view.getTag(); 
    } 
+0

它是什么改变? – 2014-09-03 06:31:14

+0

你还没有看到?在你的代码中,当你的视图为空时,你没有为视图持有者创建对象,所以每当你滚动时你的视图被回收 – Piyush 2014-09-03 06:33:09

+0

哦!好的......希望它能工作...... – 2014-09-03 06:37:20