Próbuję użyć Picassa, aby załadować obraz we fragmentach i Recyclerview. Ale nie mogę załadować zdjęcia. Początkowo myślałem, że może nie może uzyskać adresu URL z DB, ale z debugowania mogłem zobaczyć poprawny adres URL. Próbowałem na stałe zakodować adres URL, ale nadal nie działa. Mam nadzieję, że eksperci mogą mi pomóc.

To jest kod:


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

To jest część 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>
0
David 31 marzec 2020, 14:51

3 odpowiedzi

Najlepsza odpowiedź

Picasso.with (getContext ()). Load ("Image_url"). Fit (). CenterCrop (). Into (viewHolder.imageView);

Sprawdziłem adres URL użyty w metodzie load () i nie jest to adres URL obrazu. Kiedy otworzyłem ten adres URL, pojawiły się strony internetowe, zamiast otwierać obraz.

Uprzejmie użyj tego adresu URL: https://www.wikihow.com/images/thumb/4/44/Get-the-URL-for- Obrazki-Krok-6-Wersja-3.jpg / v4-760px-Pobierz-URL-do-Obrazów-Krok-6-Wersja-3.jpg

0
Syed Bilal 31 marzec 2020, 12:12

Adres URL, który próbujesz załadować, to przekierowanie do właściwej witryny, a nie oryginalny obraz.

Wypróbuj ten link z tym samym obrazem

Otrzymałem ten adres URL, sprawdzając element.

1
Malik Saifullah 31 marzec 2020, 12:01

Wydaje się, że adres URL przekierowuje do witryny wikihow, zamiast zwracać nieprzetworzony plik 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
1
Mike 31 marzec 2020, 11:53