java - RecyclerView 项目单击的 Bottom Sheet 对话框

标签 java android android-studio android-recyclerview bottom-sheet

在我的 recyclerview 中,有一些用户可以添加为最爱的项目。 当用户单击该项目的 + 图标时,我将使用 2 个按钮打开 Bottom Sheet Dialog。一旦我点击是, Collection 将被保存。

我通常会针对正常点击执行此操作,但我如何针对任何点击将其实现到 RecyclerView 适配器?

适配器类

 @Override
public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
    String urlExtension = "http://192.168.1.110/myapp/public/images";
    Glide.with(context).load(urlExtension+itemList.get(position).getList_image()).into(holder.imageView_list_city);
    holder.textView_list_city_name.setText(itemList.get(position).getList_name());
    holder.textView_list_city_desc.setText(itemList.get(position).getList_description());

    holder.layout_item_add.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Toast.makeText(context, "add", Toast.LENGTH_SHORT).show();


        }
    });

    holder.layout_item_detail.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Toast.makeText(context, "detail", Toast.LENGTH_SHORT).show();
        }
    });

}

Bottom Sheet 类

public class BottomSheetList extends BottomSheetDialogFragment {
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {

    View view = inflater.inflate(R.layout.bottom_sheet_add, container, false);
    return view;
}
}

最佳答案

点击后您需要位置。

在 ViewHolder 中设置 OnClickListener 并使用 getAdapterPosition() 获取点击项目的位置,然后调用鞋底 View

 static class Holder extends RecyclerView.ViewHolder {

    Button btnAdd;
    OnItemClickListener onItemClickListener;


    Holder(final View itemView) {
        super(itemView);


        btnAdd.setOnClickListener(view -> {
            onItemClickListener.onItemClick(getAdapterPosition());
        });
    }

    void setItemClickListener(OnItemClickListener onItemClickListener) {
        this.onItemClickListener = onItemClickListener;
    }
}

界面

interface OnItemClickListener {

void onItemClick(int position);

设置监听器

holder.setItemClickListener(this);

 @Override
public void onItemClick(int position) {
    View modelBottomSheet = LayoutInflater.from(mContext).inflate(R.layout.layout, null);
    BottomSheetDialog dialog = new BottomSheetDialog(mContext);
    dialog.setContentView(modelBottomSheet);
    dialog.show();

}

关于java - RecyclerView 项目单击的 Bottom Sheet 对话框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50805152/

相关文章:

Java MongoDB 驱动程序 : How to update all Documents in Collection?

android - 如何以编程方式创建或更改由不同颜色的线条组成的可绘制对象

android - 将 Holo 主题与 AppCompatActivity 结合使用

java - Android Studio 更新后不支持 Gradle 版本

java - 如何在 Spring Boot 中从单个 Controller 返回内容数据和页面名称

java - 为什么这个多线程计数器会产生正确的结果?

java - Android 平方根计算错误

android - 实现 Google Cloud Messaging 时 Web 服务器出现异常

Android - 前缀 "xmlns"不能显式绑定(bind)到任何命名空间; "xmlns"的命名空间也不能显式绑定(bind)到任何前缀

java - 线性布局网格在模拟器中显示但在设备上不显示,可能是什么原因?