java - BottomSheet 中的 RecyclerView 不可见

标签 java android android-recyclerview bottom-sheet

我想创建一个 bottomSheet,其中有 recyclerView。问题是,它没有显示我的 recyclerview。问题可能出在哪里?这是我的 bottomSheet 类。

public class MyBottomSheetDialogFragment extends BottomSheetDialogFragment {

public static final String TAG = "ActionBottomDialog";
private Context context;


public MyBottomSheetDialogFragment(Context context) {
    this.context = context;
}


@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
    View view = inflater.inflate(R.layout.layout_wishlist_move_to, container, false);
    final RecyclerView recyclerView = view.findViewById(R.id.recycler_bottom_sheet_move_to);

    List<String> list = new ArrayList<>();
    for (int i = 0; i < 10; i++) {
        list.add("Birthday " + i);
    }

    Adapter mAdapter = new Adapter(list);
    recyclerView.setAdapter(mAdapter);

    return view;
}


private class Adapter extends RecyclerView.Adapter<Adapter.BottomSheetHolder> {

    private List<String> myList;

    private Adapter(List<String> list) {
        this.myList = list;
    }

    @NonNull
    @Override
    public Adapter.BottomSheetHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        LayoutInflater inflater = LayoutInflater.from(context);
        return new BottomSheetHolder(inflater.inflate(R.layout.item_wishlist_bottom_sheet, parent, false));
    }

    @Override
    public void onBindViewHolder(@NonNull Adapter.BottomSheetHolder holder, int position) {
        if (myList.size() == 0) return;

        holder.labelTitleCategory.setText(myList.get(position));
        holder.labelImage.setImageResource(R.drawable.ic_icon);
    }


    @Override
    public int getItemCount() {
        return myList.size();
    }


    private class BottomSheetHolder extends RecyclerView.ViewHolder {
        final TextView labelTitleCategory;
        final ImageView labelImage;

        public BottomSheetHolder(@NonNull View itemView) {
            super(itemView);
            labelTitleCategory = itemView.findViewById(R.id.title);
            labelImage = itemView.findViewById(R.id.image);
        }
    }
}
}

这是类,我在其中显示对话框。

button.setOnClickListener(v -> {
            MyBottomSheetDialogFragment dialogWish = new MyBottomSheetDialogFragment(getContext());
            dialogWish.show(getFragmentManager(), WishListBottomSheetDialogFragment.TAG);
        });

最佳答案

您需要将布局管理器添加到 recyclerview 才能显示该项目

recyclerView.setLayoutManager(new LinearLayoutManager(context);

默认情况下,它将创建垂直布局管理器以垂直显示项目,但可以使用 horizontal and grid, staggered mangers等等

关于java - BottomSheet 中的 RecyclerView 不可见,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60042272/

相关文章:

java - Android Parcelable Arraylist

java - 检查表单上的哪个按钮引起了操作

java - 在 Java 中解构 SQL 语句

android - Rxjava - 如何正确检查 Maybe/Observable 是否为空?

java - RecyclerView 拖放式 - 文件和文件夹

android - 通过选择另一个回收器 View 来更改一个回收器 View 中的值

java - java - 如何在Java中将请求有效负载发送到REST API?

android - 什么是android :immersive attribute in Android manifest file?

android - 地理编码器是否适用于模拟器

android - 从 Firebase Firestore 检索 recyclerview 中的图像