毕加索不使用 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 网站时,而不是打开图像。
我正在尝试使用 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 网站时,而不是打开图像。