android - 无法从 URL 加载图像

标签 android listview android-listview imageview android-imageview

我尝试从 URL 加载图像,但它不起作用。发生了两种不同的错误。当我输入以 www 开头的 URL 时,应用程序不会关闭,但也不会加载图像,只会显示一个空白区域。但是,当 URL 以 http://开头时,应用程序将关闭。

我用来加载图像的代码是下一个:

public class ThreadAdapter extends BaseAdapter {
    ArrayList<Threadx> data;
    LayoutInflater inflater;
    public ThreadAdapter(Context context, ArrayList<Threadx> data) {
        super();
        inflater = LayoutInflater.from(context);
        this.data = data;
    }

    @Override
    public int getCount() {
        return data.size();
    }

    @Override
    public Object getItem(int position) {
        return data.get(position);
    }

    @Override
    public long getItemId(int position) {
        return position;
    }
    private static class ViewHolder {
        TextView tvSubject;
        TextView tvContent;
        ImageView imagen;
    }
    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        ViewHolder viewHolder = null;
        if (convertView == null) {
            convertView = inflater.inflate(R.layout.list_row_thread, null);
            viewHolder = new ViewHolder();
            viewHolder.tvSubject = (TextView) convertView
                    .findViewById(R.id.tvSubject);
            viewHolder.tvContent = (TextView) convertView
                    .findViewById(R.id.tvContent);
            viewHolder.imagen = (ImageView) convertView
                    .findViewById(R.id.image);
            convertView.setTag(viewHolder);
        } else {
            viewHolder = (ViewHolder) convertView.getTag();
        }
        String subject = data.get(position).getSubject();
        String content = data.get(position).getContent();
        String imagen = data.get(position).getImagen();
        viewHolder.tvSubject.setText(subject);
        viewHolder.tvContent.setText(content);
        Bitmap bitmap = null;
        HttpURLConnection urlConnection = null;
        try {
            URL url = new URL("www.matrallune.com/images/imagen_corporativa.jpg");
            //bitmap = BitmapFactory.decodeStream((InputStream)new URL("www.matrallune.com/images/imagen_corporativa.jpg").getContent());
            //bitmap = BitmapFactory.decodeStream(url.openConnection().getInputStream());
            urlConnection = (HttpURLConnection) url.openConnection();
            InputStream is = urlConnection.getInputStream();
            bitmap = BitmapFactory.decodeStream(is);
        } catch (IOException e) {
            e.printStackTrace();
        }
        viewHolder.imagen.setImageBitmap(bitmap);
        return convertView;
    }
}

正如您在代码中看到的那样,我尝试了不同的方法,但所有方法都存在相同的问题。我的目的是从变量“imagen”中获取 URL。

最佳答案

使用这个问题>> Loading Bitmap to ImageView from URL in android

public class DownloadImageTask extends AsyncTask<String, Void, Bitmap> {
    private ImageView imageView;
    private Bitmap image;

    public DownloadImageTask(ImageView imageView) {
        this.imageView = imageView;
    }

    protected Bitmap doInBackground(String... urls) {
        String urldisplay = urls[0];
        try {
            InputStream in = new java.net.URL(urldisplay).openStream();
            image = BitmapFactory.decodeStream(in);
        } catch (Exception e) {
            image = null;
        }
        return image;
    }

    @SuppressLint("NewApi")
    protected void onPostExecute(Bitmap result) {
        if (result != null) {
            imageView.setImageBitmap(result);
        }
    }
}

现在调用您的代码:

public View getView(int position, View convertView, ViewGroup parent) {
    ViewHolder viewHolder = null;
    if (convertView == null) {
        conv`enter code here`ertView = inflater.inflate(R.layout.list_row_thread, null);
        viewHolder = new ViewHolder();
        viewHolder.tvSubject = (TextView) convertView
                .findViewById(R.id.tvSubject);
        viewHolder.tvContent = (TextView) convertView
                .findViewById(R.id.tvContent);
        viewHolder.imagen = (ImageView) convertView
                .findViewById(R.id.image);
        convertView.setTag(viewHolder);
    } else {
        viewHolder = (ViewHolder) convertView.getTag();
    }
    String subject = data.get(position).getSubject();
    String content = data.get(position).getContent();
    String imagen = data.get(position).getImagen();
    viewHolder.tvSubject.setText(subject);
    viewHolder.tvContent.setText(content);
    new DownloadImageTask(viewHolder.imagen).execute("www.matrallune.com/images/imagen_corporativa.jpg");
    return convertView;
}

关于android - 无法从 URL 加载图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30220210/

相关文章:

java - Android - findViewById(int id) 始终返回 null

java - onListItemClick (mNotesCursor) 的问题

android - 如何突出显示 ListView 中的选定项?

java - 'java.util.ArrayList' 未经检查的分配

android - 在 Android 上存储 key

javascript - 是否有必要在每个 Controller 中使用 $ionicPlatform.ready() ?

android - 如何获取listview中按钮的Id?

android - 动画后将 View 重置为原始位置

java - ArrayAdapter 从未使用过 ArrayList null 并且所有项目都出现在单行中

java - 更新 Viewpager 中的 ListView