2014-09-03 151 views
0

我有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

回答

1

嘗試像這個 -

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

0

更改這一個。

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

相關問題