将 NetworkImageView 更改为 ImageView?

change NetworkImageView to ImageView?

我有一个 NetworkImageView,但我想使用 ImageView 来缓存图像,而不是一直从网络获取图像。

有什么改变的想法吗?

  class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener{
        //Views
        public NetworkImageView imageView;
        public TextView textViewName;
        public TextView textViewPublisher;

        //Initializing Views
        public ViewHolder(View itemView) {
            super(itemView);
            imageView = (NetworkImageView) itemView.findViewById(R.id.imageViewHero);
            textViewName = (TextView) itemView.findViewById(R.id.textViewName);
            textViewPublisher = (TextView) itemView.findViewById(R.id.textViewPublisher);
            textViewName.setClickable(true);
            textViewName.setOnClickListener(this);
        }

查看 Picasso。简单易用,提供缓存机制。

您可以使用 fresco 库来加载图像。 它有很多功能。 https://github.com/facebook/fresco

改变布局 从 <NetworkImageView<ImageView,然后从 public NetworkImageView imageView;public ImageView imageView; 和从 imageView = (NetworkImageView) itemView.findViewById(R.id.imageViewHero);imageView = (ImageView) itemView.findViewById(R.id.imageViewHero);

希望对您有所帮助

不能直接在ImageView中设置图片。您必须在位图中转换该图像,然后设置

public static Bitmap getBitmapFromURL(String src) {
    try {
        Log.e("src",src);
        URL url = new URL(src);
        HttpURLConnection connection = (HttpURLConnection) url.openConnection();
        connection.setDoInput(true);
        connection.connect();
        InputStream input = connection.getInputStream();
        Bitmap myBitmap = BitmapFactory.decodeStream(input);
        Log.e("Bitmap","returned");
        return myBitmap;
    } catch (IOException e) {
        e.printStackTrace();
        Log.e("Exception",e.getMessage());
        return null;
    }
}

然后设置为imageview :

imageView.setImageBitmap(getBitmapFromURL(url));