繁体   English   中英

在Android中将图像下载到ListView中

[英]Download Images into ListView in android

我想从互联网上将图像列表加载到列表视图中。 每个列表项包含文本视图(即图像的URL)和图像视图。 这是我的适配器类代码,用于下载图像并绑定到listview。 但是图片与网址不匹配。 几行具有相同的图像(但不同的URL)。 有些行在一段时间后会改变它的图像。 请帮帮我。

public class CustomAdapter extends BaseAdapter{

private Activity act;
private String imageUrlsArray[];
private LayoutInflater inflater;

public CustomAdapter(Activity activity, String imageUrls[]) {
    this.act = activity;
    this.imageUrlsArray = imageUrls;
    inflater = (LayoutInflater)this.act.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}

@Override
public int getCount() {
    return imageUrlsArray.length;
}

@Override
public Object getItem(int arg0) {
    return null;
}

@Override
public long getItemId(int arg0) {
    return 0;
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {
    ViewHolder holder;
    View rowView = convertView;

    if (rowView == null) { 

        rowView = inflater.inflate(R.layout.list_row, parent, false);

        holder = new ViewHolder();
        holder.imageView = (ImageView)rowView.findViewById(R.id.imageViewInListRow);
        holder.urlTextView = (TextView)rowView.findViewById(R.id.textViewInListRow);


        rowView.setTag(holder);

    }else{
        holder = (ViewHolder) rowView.getTag();

    } 
    loadImage(holder.imageView, imageUrlsArray[position]);
    holder.urlTextView.setText(imageUrlsArray[position]);

    return rowView;
}

private void loadImage(ImageView iv, String url) {
    DownloadTask asyncTask = new DownloadTask();
    asyncTask.execute(iv, url);
}

class DownloadTask extends AsyncTask<Object,Object, Object>{
    private ImageView iv;
    private InputStream is = null;
    private Drawable imageDrawable = null;
    @Override
    protected Object doInBackground(Object... params) {
        iv = (ImageView) params[0];

        try {
            is  = new DefaultHttpClient().execute(new HttpPost(params[1].toString())).getEntity().getContent();
            imageDrawable = Drawable.createFromStream((InputStream)is , "src name");
        } catch (Exception e) {
            e.printStackTrace();
        }
        return imageDrawable;
    }
    @Override
    protected void onPostExecute(Object response) {
        super.onPostExecute(response);
        if(response != null){
            iv.setImageDrawable((Drawable)response);
        } 


    }

}
static class ViewHolder{
    public TextView urlTextView;
    public ImageView imageView;
}

}

使用hashMap与textview进行正确映射。 首先将url转换为适配器中的Image Bitmap。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM