毕加索不使用 RecyclerView 在片段中加载图像

Picasso does not load image in fragment with RecyclerView

我正在尝试使用 Picasso 在片段和 Recyclerview 中加载图像。但是我无法加载图片。最初我在想也许它无法从数据库中获取 URL 但从调试中我可以看到正确的 URL。我尝试了硬编码 URL 但它仍然无法正常工作。希望高手帮帮我。

这是代码:


public class MenuFragment extends Fragment {

   private MenuViewModel menuViewModel;

   FirebaseDatabase database;
   DatabaseReference category;
   RecyclerView recycler_menu;
   RecyclerView.LayoutManager layoutManager;

   public View onCreateView(@NonNull LayoutInflater inflater,
                            ViewGroup container, Bundle savedInstanceState) {

       //init fireabse
       database = FirebaseDatabase.getInstance();
       category = database.getReference("Category");

       View root = inflater.inflate(R.layout.fragment_memu, container, false);
       recycler_menu = (RecyclerView) root.findViewById(R.id.recycler_menu);
       recycler_menu.setHasFixedSize(true);
       recycler_menu.setLayoutManager(new LinearLayoutManager(inflater.getContext()));

       loadMenu();
       //recycler_menu.setAdapter(new ChatRecyclerViewAdapter());

       return root;
   }

   private void loadMenu() {
       FirebaseRecyclerAdapter<Category,MenuViewHolder> adapter = new FirebaseRecyclerAdapter<Category, MenuViewHolder>(
               Category.class, R.layout.menu_item, MenuViewHolder.class, category) {
           @Override
           protected void populateViewHolder(MenuViewHolder viewHolder, Category category, int i) {
               viewHolder.txtMenuName.setText(category.getName());
               Picasso.with(getContext()).load("https://www.wikihow.com/Get-the-URL-for-Pictures#/Image:Get-the-URL-for-Pictures-Step-6-Version-3.jpg").
                      fit().centerCrop().into(viewHolder.imageView);

               final Category clickItem = category;
               viewHolder.setItemClickListener(new ItemClickListener() {
                   @Override
                   public void onClick(View v, int position, boolean isLongClick) {
                       Toast.makeText(getActivity().getBaseContext(),""+clickItem.getName(),Toast.LENGTH_SHORT).show();
                   }
               });

           }
       };
       recycler_menu.setAdapter((adapter));
   }
}

这是XML部分

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout 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=".ui.menu.MenuFragment">

    <androidx.recyclerview.widget.RecyclerView
        android:id="@+id/recycler_menu"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:scrollbars="vertical">
    </androidx.recyclerview.widget.RecyclerView>

</androidx.constraintlayout.widget.ConstraintLayout>

URL 似乎重定向到 wikihow 网站而不是返回原始 JPG。

https://www.wikihow.com/images/thumb/4/44/Get-the-URL-for-Pictures-Step-6-Version-3.jpg/v4-760px-Get-the-URL-for-Pictures-Step-6-Version-3.jpg

您尝试加载的 URL 是重定向到实际网站而不是原始图像。

Try this link of the same image

我通过检查元素得到了这个URL。

Picasso.with(getContext()).load("Image_url").fit().centerCrop().into(viewHolder.imageView);

我已经检查了您在 load() 方法中使用的 url,这不是图像 url。当我打开这个 url 网站时,而不是打开图像。

请使用此 url: https://www.wikihow.com/images/thumb/4/44/Get-the-URL-for-Pictures-Step-6-Version-3.jpg/v4-760px-Get-the-URL-for-Pictures-Step-6-Version-3.jpg