服务器中的图像未显示在列表视图中

时间:2015-10-28 08:59:53

标签: android listview

您好我正在使用listview并将服务器中的图像显示在其中。

但问题是所有已加载的图像会逐一显示在最后一项中,而是显示在相应的位置上。

请帮我在各自的位置显示图像

public class Offer_adapter extends ArrayAdapter<String> {
Context context1;
String[] offer_title;
String[] offerimg1;
String[] mrp;
String[] offerprice;
String[] you_save;
String[] imgURLArray;
Bitmap bitmap;
ImageView offerimg;
 int a;
LayoutInflater inflater1;

public Offer_adapter(Context context1, String[] offer_title, String[] offerimg1, String[] mrp, String[] you_save, String[] offerprice) {
    super(context1, R.id.offer_list, offer_title);
    this.context1 = context1;
    this.offer_title = offer_title;
    this.offerimg1 = offerimg1;
    this.mrp = mrp;
    this.offerprice = offerprice;
    this.you_save = you_save;
}

private static class ViewHolder {

    String offerimg;

}

@Override
public View getView(int position, View convertView, ViewGroup parent) {
    ViewHolder viewHolder = null;
    if (convertView == null) {
        inflater1 = (LayoutInflater) context1.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        convertView = inflater1.inflate(R.layout.offer_list, null);
        viewHolder = new ViewHolder();

    }
    android.util.Log.v("abhi", "" + position);
    imgURLArray = new String[position + 1];
    for (int i = 0; i <= position; i++) {
        android.util.Log.v("abhijit", "" + position);
        imgURLArray[i] = "http://www.surun.co/preost/mod_offer/images/" + offerimg1[position];
        android.util.Log.v("abhi", "" + imgURLArray[position]);
    }
   a=position;
    viewHolder = (ViewHolder) convertView.getTag();
    TextView offertitle = (TextView) convertView.findViewById(R.id.ofrtitle);
    TextView offermrp = (TextView) convertView.findViewById(R.id.offeroriginal);
    offermrp.setPaintFlags(offermrp.getPaintFlags() | Paint.STRIKE_THRU_TEXT_FLAG);
    TextView offersave = (TextView) convertView.findViewById(R.id.saveoffer);
    TextView ofrprice = (TextView) convertView.findViewById(R.id.priceoffer);
     offerimg = (ImageView) convertView.findViewById(R.id.ofr_img);

    offertitle.setText(offer_title[position]);
    offermrp.setText("Original Price: \u20B9" + mrp[position]);
    offersave.setText("You Save: \u20B9" + you_save[position]);
    ofrprice.setText("Offer Price: \u20B9" + offerprice[position]);
   // Bitmap imageBitmap = null;


    new DownloadAsyncTask().execute(imgURLArray[position]);
    Log.v("abhi","async");
    return convertView;
}

private class DownloadAsyncTask extends AsyncTask<String, String, Bitmap> {

    protected Bitmap doInBackground(String... args) {
        try {
            Log.v("abhi","in do background");
            bitmap = BitmapFactory.decodeStream((InputStream) new URL(args[0]).getContent());
            bitmap = Bitmap.createScaledBitmap(bitmap, 270, 375, true);

        } catch (Exception e) {
            e.printStackTrace();
        }
        return bitmap;
    }

    @Override
    protected void onPostExecute(Bitmap bitmap) {
        super.onPostExecute(bitmap);
        if (bitmap !=null) {
        offerimg.setImageBitmap(bitmap);
        } else {

            offerimg.setImageResource(R.drawable.nooffer);
        }

    }
}
  }

所有图像一个接一个地显示在最后一个项目中。我只想在各自的位置上展示它。

1 个答案:

答案 0 :(得分:2)

你应该使用延迟加载而不是将图像作为位图下载 位图会在某个时候产生问题,或者会在某些设备中出现内存错误

有很多图像加载库可供Android使用。 看看这些

https://github.com/square/picasso
https://github.com/nostra13/Android-Universal-Image-Loader
https://code.google.com/p/android-query/wiki/ImageLoading
https://android.googlesource.com/platform/frameworks/volley
https://github.com/koush/UrlImageViewHelper
https://github.com/novoda/image-loader