微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

尝试在 RecycleView Glide 中加载图像,而 Picasso 在适配器中不加载任何内容

如何解决尝试在 RecycleView Glide 中加载图像,而 Picasso 在适配器中不加载任何内容

我正在尝试使用 Glide 在 RecyclerView 中加载 4 个图像,但它什么也没加载。我试过 Picasso 但我得到了相同的结果。应用程序具有互联网权限。如果我在 Picasso 中运行 GlideMainActivity,它们运行良好,但它们在我的适配器中不起作用。如果我在适配器中使用 drawable,它就可以工作。如果我将 ImageView 替换为 TextView,它就可以工作。仅使用 GlidePicasso 失败我不知道我错在哪里,任何帮助将不胜感激。这是我的代码

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());
                }
            });
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。