Android 无法使用glide在recyclerView中显示图像
图像不显示在回收器视图中 我正在使用glide在回收器视图中显示图像 我有一个图像url列表,并在适配器中传递该列表。我在另一个活动中使用了非常类似的方法,它在那里起作用。。。但它在这项活动中不起作用 AnimeActivity.javaAndroid 无法使用glide在recyclerView中显示图像,android,android-glide,Android,Android Glide,图像不显示在回收器视图中 我正在使用glide在回收器视图中显示图像 我有一个图像url列表,并在适配器中传递该列表。我在另一个活动中使用了非常类似的方法,它在那里起作用。。。但它在这项活动中不起作用 AnimeActivity.java public class AnimeActivity extends AppCompatActivity { RecyclerView rv; List<String> adsImagesData = new ArrayList<>
public class AnimeActivity extends AppCompatActivity {
RecyclerView rv;
List<String> adsImagesData = new ArrayList<>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_anime);
rv = findViewById(R.id.ads_recyclerview);
rv.setLayoutManager(new LinearLayoutManager(this));
getSupportActionBar().hide();
adsImagesData.add("http://cdn.playbuzz.com/cdn/62b7af36-65b7-41aa-8db2-e34fd8a76acf/62c5efd3-fa55-464b-8ee5-9a3e2543c830.jpg");
rv.setAdapter(new AdRecyclerViewAdapter(this , adsImagesData));
}
}
public class AdRecyclerViewAdapter extends RecyclerView.Adapter<AdRecyclerViewAdapter.MyViewHolder> {
private Context mContext;
private List<String> mData;
public AdRecyclerViewAdapter(Context mContext, List<String> mData) {
this.mContext = mContext;
this.mData = mData;
}
@NonNull
@Override
public MyViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view;
LayoutInflater layoutInflater = LayoutInflater.from(mContext);
view = layoutInflater.inflate(R.layout.ad_row_item , parent , false);
return new MyViewHolder(view);
}
@Override
public void onBindViewHolder(@NonNull MyViewHolder holder, int position) {
Glide.with(holder.adImg.getContext()).load(mData.get(position)).into(holder.adImg);
}
@Override
public int getItemCount() {
return mData.size();
}
public class MyViewHolder extends RecyclerView.ViewHolder {
ImageView adImg;
public MyViewHolder(@NonNull View itemView) {
super(itemView);
adImg = itemView.findViewById(R.id.ad_image_view);
}
}
}
public class AnimeActivity扩展了appcompativity{
回收视图rv;
List adsImagesData=newarraylist();
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_anime);
rv=findViewById(R.id.ads\U recyclerview);
rv.setLayoutManager(新直线布局经理(本));
getSupportActionBar().hide();
adsImagesData.add(“http://cdn.playbuzz.com/cdn/62b7af36-65b7-41aa-8db2-e34fd8a76acf/62c5efd3-fa55-464b-8ee5-9a3e2543c830.jpg");
rv.设置适配器(新的ADRECELERVIEWADAPTER(本,adsImagesData));
}
}
adRecycleServiceAdapter.java
public class AnimeActivity extends AppCompatActivity {
RecyclerView rv;
List<String> adsImagesData = new ArrayList<>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_anime);
rv = findViewById(R.id.ads_recyclerview);
rv.setLayoutManager(new LinearLayoutManager(this));
getSupportActionBar().hide();
adsImagesData.add("http://cdn.playbuzz.com/cdn/62b7af36-65b7-41aa-8db2-e34fd8a76acf/62c5efd3-fa55-464b-8ee5-9a3e2543c830.jpg");
rv.setAdapter(new AdRecyclerViewAdapter(this , adsImagesData));
}
}
public class AdRecyclerViewAdapter extends RecyclerView.Adapter<AdRecyclerViewAdapter.MyViewHolder> {
private Context mContext;
private List<String> mData;
public AdRecyclerViewAdapter(Context mContext, List<String> mData) {
this.mContext = mContext;
this.mData = mData;
}
@NonNull
@Override
public MyViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view;
LayoutInflater layoutInflater = LayoutInflater.from(mContext);
view = layoutInflater.inflate(R.layout.ad_row_item , parent , false);
return new MyViewHolder(view);
}
@Override
public void onBindViewHolder(@NonNull MyViewHolder holder, int position) {
Glide.with(holder.adImg.getContext()).load(mData.get(position)).into(holder.adImg);
}
@Override
public int getItemCount() {
return mData.size();
}
public class MyViewHolder extends RecyclerView.ViewHolder {
ImageView adImg;
public MyViewHolder(@NonNull View itemView) {
super(itemView);
adImg = itemView.findViewById(R.id.ad_image_view);
}
}
}
public类adrecycleveriewadapter扩展了RecyclerView.Adapter{
私有上下文;
私有列表数据;
公共地址服务适配器(上下文mContext,列表mData){
this.mContext=mContext;
this.mData=mData;
}
@非空
@凌驾
public MyViewHolder onCreateViewHolder(@NonNull ViewGroup父级,int-viewType){
视图;
LayoutInflater LayoutInflater=LayoutInflater.from(mContext);
视图=布局更平坦。充气(R.layout.ad\u行\u项,父项,false);
返回新的MyViewHolder(视图);
}
@凌驾
public void onBindViewHolder(@NonNull MyViewHolder,int位置){
使用(holder.adImg.getContext()).load(mData.get(position)).into(holder.adImg));
}
@凌驾
public int getItemCount(){
返回mData.size();
}
公共类MyViewHolder扩展了RecyclerView.ViewHolder{
图像视图adImg;
公共MyViewHolder(@NonNull View itemView){
超级(项目视图);
adImg=itemView.findviewbyd(R.id.ad\u图像\u视图);
}
}
}
尝试使用
RequestManager requestManager = Glide.with(mContext);
RequestBuilder requestBuilder = requestManager.load(mData.get(position));
requestBuilder.into(holder.adImg);
我运行您的代码并尝试使用毕加索和格莱德,结果与您描述的相同,但当我在列表中添加另一个url时,其他图像在recyclerview中成功显示为
adsImagesData.add("http://cdn.playbuzz.com/cdn/62b7af36-65b7-41aa-8db2-e34fd8a76acf/62c5efd3-fa55-464b-8ee5-9a3e2543c830.jpg");
adsImagesData.add("https://lh3.googleusercontent.com/Kf1Bc7wkQtEkbdinSLJhGBNwIjm7R_fe4unmPXHO7bMwg_zArmRhgenhs7nNhb5pp6KJ=s180-rw");
当第一个图像要下载时,滑动它通过错误
E/Glide: GlideExceptioncom.bumptech.glide.load.engine.GlideException: Failed to load resource
There was 1 cause:
java.io.IOException(Cleartext HTTP traffic to cdn.playbuzz.com not permitted)
这意味着本网站不允许以这种方式下载图像
我用这个方法检查这个错误
Glide.with(holder.adImg.getContext())
.load(mData.get(position))
.listener(new RequestListener<String, GlideDrawable>() {
@Override
public boolean onException(Exception e, String model, Target<GlideDrawable> target, boolean isFirstResource) {
Log.e("Glide", "GlideException"+e);
return false;
}
@Override
public boolean onResourceReady(GlideDrawable resource, String model, Target<GlideDrawable> target, boolean isFromMemoryCache, boolean isFirstResource) {
return false;
}
})
.into(holder.adImg);
在清单文件的应用程序标记中添加此行
在xml目录中的资源中创建布局,如下所示
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
<domain-config cleartextTrafficPermitted="true">
<domain includeSubdomains="true">cdn.playbuzz.com</domain>
</domain-config>
</network-security-config>
cdn.playbusz.com
从Android 9(API级别28)开始,默认情况下禁用明文支持。
在此之后,这两个图像都会按照您的需要显示在recyclerview中以供测试用例使用https
adsImagesData.add(“https://
执行了,但仍然不工作。使用了另一个url,但仍然..我的代码是否完美?@Override public int getItemCount(){return mData.size();}
是否执行此操作,仍然存在问题exists@IntelliJAmiya是的,它成功了..谢谢..把它放在答案中。我会验证这个。你能解释一下吗?请解释一下吗?但我用不同的URL检查了它..当我实现@IntelliJ Amiya代码时。甚至那个图像(有问题的)也显示在android 10上的RecycleServiceCheck中