问题描述
我正在尝试使用 Glide
在 RecyclerView 中加载 4 个图像,但它什么也没加载。我试过 Picasso
但我得到了相同的结果。应用程序具有互联网权限。如果我在 Picasso
中运行 Glide
和 MainActivity
,它们运行良好,但它们在我的适配器中不起作用。如果我在适配器中使用 drawable,它就可以工作。如果我将 ImageView 替换为 TextView,它就可以工作。仅使用 Glide
和 Picasso
失败我不知道我错在哪里,任何帮助将不胜感激。这是我的代码:
Fragment1.xml
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity"
android:orientation="vertical">
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/recycler"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</LinearLayout>
Item_list.xml
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<ImageView
android:id="@+id/datoId"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</LinearLayout>
Fragment1.java
public class Fragment1 extends Fragment {
ArrayList<String> listaDatos;
RecyclerView recycler;
String url1 = "https://image.tmdb.org/t/p/w500/2xFicIrFGqsy503rcuGUw6PAacw.jpg";
String url2 = "https://image.tmdb.org/t/p/w500/bnuC6hu7AB5dYW26A3o6NNLlIlE.jpg";
String url3 = "https://image.tmdb.org/t/p/w500/rkuvJnamPl3xW9wKJsIS6qkmOCW.jpg";
String url4 = "https://image.tmdb.org/t/p/w500/orzPlWUbf0S5HeWmpP3TeHvduwn.jpg";
public Fragment1() {
// required empty public constructor
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
@Override
public View onCreateView(LayoutInflater inflater,ViewGroup container,Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_1,container,false);
recycler = (RecyclerView) view.findViewById(R.id.recycler);
recycler.setLayoutManager(new GridLayoutManager(getContext(),2));
listaDatos = new ArrayList<String>();
listaDatos.add(url1);
listaDatos.add(url2);
listaDatos.add(url3);
listaDatos.add(url4);
Adaptador adaptador = new Adaptador(listaDatos);
recycler.setAdapter(adaptador);
return view;
}
}
Adaptador.java(适配器)
public class Adaptador extends RecyclerView.Adapter<Adaptador.ViewHolderDatos> {
ArrayList<String> listaDatos;
public Adaptador(ArrayList<String> listaDatos) {
this.listaDatos = listaDatos;
}
@NonNull
@Override
public ViewHolderDatos onCreateViewHolder(@NonNull ViewGroup parent,int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_list,null,false);
return new ViewHolderDatos(view);
}
@Override
public void onBindViewHolder(@NonNull ViewHolderDatos holder,int position) {
holder.asignarDatos(listaDatos.get(position));
}
@Override
public int getItemCount() {
return listaDatos.size();
}
public class ViewHolderDatos extends RecyclerView.ViewHolder {
ImageView caratula;
public ViewHolderDatos(@NonNull View itemView) {
super(itemView);
caratula = itemView.findViewById(R.id.datoId);
}
public void asignarDatos(String s) {
//caratula.setimageResource(R.drawable.ic_launcher_foreground); // Works
//Picasso.get().load(s).into(caratula); //Not works
//caratula.setText(s); // Swapping ImageView for TextView,this works
Glide.with(caratula.getContext())
.load(s)
.error(R.drawable.ic_launcher_background)
.placeholder(R.drawable.ic_launcher_foreground)
.into(caratula); // Not works
}
}
}
日志
2021-04-05 19:13:34.411 5356-5356/? I/yecto.adaptado: Late-enabling -Xcheck:jni
2021-04-05 19:13:34.427 5356-5356/? E/yecto.adaptado: UnkNown bits set in runtime_flags: 0x8000
2021-04-05 19:13:34.564 5356-5356/com.proyecto.adaptador I/yecto.adaptado: Waiting for a blocking GC ClassLinker
2021-04-05 19:13:34.569 5356-5356/com.proyecto.adaptador I/yecto.adaptado: WaitForGcToComplete blocked ClassLinker on HeapTrim for 5.317ms
2021-04-05 19:13:34.579 5356-5356/com.proyecto.adaptador I/Perf: Connecting to perf service.
2021-04-05 19:13:34.591 5356-5356/com.proyecto.adaptador I/FeatureParser: can't find joyeuse.xml in assets/device_features/,it may be in /vendor/etc/device_features
2021-04-05 19:13:34.599 5356-5356/com.proyecto.adaptador E/libc: Access denied finding property "ro.vendor.df.effect.conflict"
2021-04-05 19:13:34.582 5356-5356/com.proyecto.adaptador W/yecto.adaptador: type=1400 audit(0.0:39742): avc: denied { read } for name="u:object_r:vendor_default_prop:s0" dev="tmpfs" ino=1008 scontext=u:r:untrusted_app:s0:c36,c257,c512,c768 tcontext=u:object_r:vendor_default_prop:s0 tclass=file permissive=0
2021-04-05 19:13:34.642 5356-5356/com.proyecto.adaptador D/ForceDarkHelper: updateByCheckExcludeList: pkg: com.proyecto.adaptador activity: com.proyecto.adaptador.MainActivity@3f0787e
2021-04-05 19:13:34.644 5356-5356/com.proyecto.adaptador D/ForceDarkHelper: updateByCheckExcludeList: pkg: com.proyecto.adaptador activity: com.proyecto.adaptador.MainActivity@3f0787e
2021-04-05 19:13:34.667 5356-5356/com.proyecto.adaptador W/yecto.adaptado: Accessing hidden method Landroid/view/View;->computeFitSystemWindows(Landroid/graphics/Rect;Landroid/graphics/Rect;)Z (greylist,reflection,allowed)
2021-04-05 19:13:34.667 5356-5356/com.proyecto.adaptador W/yecto.adaptado: Accessing hidden method Landroid/view/ViewGroup;->makeOptionalFitsSystemWindows()V (greylist,allowed)
2021-04-05 19:13:34.674 5356-5356/com.proyecto.adaptador D/ForceDarkHelper: updateByCheckExcludeList: pkg: com.proyecto.adaptador activity: com.proyecto.adaptador.MainActivity@3f0787e
2021-04-05 19:13:34.681 5356-5356/com.proyecto.adaptador I/chatty: uid=10292(com.proyecto.adaptador) identical 2 lines
2021-04-05 19:13:34.682 5356-5356/com.proyecto.adaptador D/ForceDarkHelper: updateByCheckExcludeList: pkg: com.proyecto.adaptador activity: com.proyecto.adaptador.MainActivity@3f0787e
2021-04-05 19:13:34.714 5356-5356/com.proyecto.adaptador D/ForceDarkHelper: updateByCheckExcludeList: pkg: com.proyecto.adaptador activity: com.proyecto.adaptador.MainActivity@3f0787e
2021-04-05 19:13:34.727 5356-5356/com.proyecto.adaptador I/chatty: uid=10292(com.proyecto.adaptador) identical 6 lines
2021-04-05 19:13:34.727 5356-5356/com.proyecto.adaptador D/ForceDarkHelper: updateByCheckExcludeList: pkg: com.proyecto.adaptador activity: com.proyecto.adaptador.MainActivity@3f0787e
2021-04-05 19:13:34.737 5356-5392/com.proyecto.adaptador I/AdrenoGLES: QUALCOMM build : 57da73e,I82b4603a7a
Build Date : 12/03/20
OpenGL ES Shader Compiler Version: EV031.27.05.03
Local Branch :
Remote Branch : refs/tags/AU_LINUX_ANDROID_LA.UM.8.9.R1.10.00.00.558.071
Remote Branch : NONE
Reconstruct Branch : nothing
2021-04-05 19:13:34.737 5356-5392/com.proyecto.adaptador I/AdrenoGLES: Build Config : S P 8.0.12 AArch64
2021-04-05 19:13:34.739 5356-5392/com.proyecto.adaptador I/AdrenoGLES: PFP: 0x016ee187,ME: 0x00000000
2021-04-05 19:13:34.754 5356-5392/com.proyecto.adaptador W/Gralloc3: mapper 3.x is not supported
```
解决方法
在 Android 清单文件中。添加上网权限
<uses-permission android:name="android.permission.INTERNET" />
其次,在 onBindViewHolder 方法中使用 Picasso 或 Glide。
@Override
public void onBindViewHolder(@NonNull ViewHolderDatos holder,int position) {
Picasso.get().load(listaDatos.get(position))
.placeholder(R.drawable.ic_launcher_foreground)
.into(holder.caratula,new Callback() {
@Override
public void onSuccess() { }
@Override
public void onError(Exception e) {
Log.e("TAG","onError:" + e.getMessage());
}
});
}