recycleview使用glide异步加载网络图片(先下载再展示)

前言:项目中有时候后端给我们提供的可能不是一个能直接访问的图片url(在浏览器中输入地址就能访问),而是一个下载地址(比如下文中的cloudBean.getIconUrl)。我们依然能够使用glide进行加载。

因为在列表中加载,故需要在适配中编写,废话不说,上代码:

Glide.with(mContext).asBitmap().load(cloudBean.getIconUrl())
                        .diskCacheStrategy(DiskCacheStrategy.RESOURCE).
                        .into(new BitmapImageViewTarget(holder.imageviewtwo) {
                            @Override
                            protected void setResource(Bitmap resource) {
                                if (resource != null) {
                                    holder.imageviewtwo.setImageBitmap(resource);
                                    return;
                                }
                            }
                        });

可以看出,glide帮我们做了很多工作:
①异步下载图片;

②自动帮助我们设置imageView的tag工作;

③设置缓存策略,当我们再次滑动到item时,此时若图片下载完毕,直接在本地获取;

④无需跨代码,代码优雅

上述介绍了异步的方式,其实下载图片,还有同步的方式,感兴趣的同学可以自行搜索相关内容。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在RecyclerView展示后台图片和文字,你可以使用一个布局文件,其中包含一个ImageView和一个TextView。在RecyclerView的Adapter中,你需要绑定这些视图到数据源中的相应项。对于图片,你可以使用Glide或Picasso等图片加载库来加载图片。以下是一个简单的示例: 首,在布局文件中添加一个ImageView和一个TextView: ```xml <RelativeLayout android:layout_width="match_parent" android:layout_height="wrap_content"> <ImageView android:id="@+id/image" android:layout_width="match_parent" android:layout_height="200dp" android:scaleType="centerCrop"/> <TextView android:id="@+id/text" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_below="@id/image" android:textSize="16sp" android:padding="8dp"/> </RelativeLayout> ``` 接下来,在RecyclerView的Adapter中,你需要绑定这些视图到数据源中的相应项。例如,如果你的数据源是一个列表,其中每个项包含一个图片URL和一个说明文本,那么你可以这样做: ```java public class MyAdapter extends RecyclerView.Adapter<MyAdapter.MyViewHolder> { private List<MyItem> itemList; public static class MyViewHolder extends RecyclerView.ViewHolder { public ImageView image; public TextView text; public MyViewHolder(View view) { super(view); image = view.findViewById(R.id.image); text = view.findViewById(R.id.text); } } public MyAdapter(List<MyItem> itemList) { this.itemList = itemList; } @Override public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { View itemView = LayoutInflater.from(parent.getContext()) .inflate(R.layout.my_item_layout, parent, false); return new MyViewHolder(itemView); } @Override public void onBindViewHolder(MyViewHolder holder, int position) { MyItem item = itemList.get(position); // 加载图片 Glide.with(holder.image.getContext()) .load(item.getImageUrl()) .into(holder.image); // 设置文本 holder.text.setText(item.getText()); } @Override public int getItemCount() { return itemList.size(); } } ``` 在这个例子中,我们假设`MyItem`是一个包含图片URL和说明文本的数据模型。在`onBindViewHolder`方法中,我们使用Glide加载图片,并将文本设置为TextView的文本。注意,在这个例子中,我们使用了一个RelativeLayout来包含ImageView和TextView,这样可以方便地控制它们之间的位置关系。 最后,在你的Activity或Fragment中,你需要创建RecyclerView和Adapter,并将它们绑定在一起: ```java RecyclerView recyclerView = findViewById(R.id.recycler_view); MyAdapter adapter = new MyAdapter(itemList); recyclerView.setAdapter(adapter); recyclerView.setLayoutManager(new LinearLayoutManager(this)); ``` 在这个例子中,我们使用LinearLayoutManager来设置RecyclerView的布局管理器。你可以根据需要使用其他类型的布局管理器。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值