当前位置: 首页 > 知识库问答 >
问题:

试着在RecycleView Glide中加载图像,而Picasso在适配器中没有加载任何内容

李疏珂
2023-03-14

我试图使用glide在一个RecyclerView中加载4个图像,但它没有加载任何图像。我试过毕加索但得到了同样的结果。App有互联网权限。如果我在mainactivity中运行picassoglide,它们工作得很好,但在我的适配器中不工作。如果我在适配器中使用抽屉,它会起作用。如果我将ImageView替换为TextView,它就能工作。只有使用glidepicasso失败了,我不知道我错在哪里,任何帮助都将是感激的。这是我的代码:

片段1.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>

片段1.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;
    }
}

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

        }
    }
}

共有1个答案

云曦之
2023-03-14

试试看,这里正是你需要适应你的项目的地方。也检查您的实现。如所示的示例。最好的方法是并排检查两个代码。干杯!

 类似资料:
  • 问题内容: 我有一个5000 x 4000像素的图像,想要绘制到画布上。 首先,我尝试从资源中加载它。我把它放进去了。 我使用以下方法: 它像魅力一样运作。 在这种情况下,是。 所以现在我想从sdcard加载它。 这是我尝试做的事情: 在这种情况下,是,创建时得到了。 所以我想知道: 有没有一种方法可以加载图像而不会出现该错误?还是有办法将a转换为? 注意: 我不想调整图像的大小,因为我正在实现缩

  • 我希望方法使用picasso从服务器加载图像,并且我希望显示一个进度条,直到照片完全下载完毕。下面是我的代码:

  • 下面是我的代码: 只是一个加载图像的文件。 我得到以下错误: 以下是完整的代码:

  • 我使用intelliJ IDEA中的maven webapp原型创建了一个spring项目。我正在使用tomcat插件和maven插件。我可以在app name/home路径上运行这个应用程序,但是css和图像没有加载,它显示的是简单的文本和图像表情。 在项目内部,我创建了ApplicationInitializer类,这很好,ApplicationConfig看起来像这样- 下面是文件夹结构-

  • 问题内容: 当我尝试在applet浏览器中运行applet时,无法找到资源(图像)。我尝试像这样加载资源: 但是当我在appet查看器中运行它时,路径是这样的:imgPath:file:D:/Work/app/build/classes/com/blah/Images/a.png 虽然此路径中有图像,但前缀文件是:导致问题,我该如何测试此代码? 当部署在服务器中并且代码库返回服务器URL时,此代码

  • 无法将获取错误的图像显示为未找到,但我已为其提供了完整路径。我不知道我错在哪里。