Диалог нижнего листа для RecyclerView Item Click - PullRequest
0 голосов
/ 11 июня 2018

В моем recyclerview есть некоторые элементы, которые пользователь может добавить в избранное.Когда пользователь нажмет на иконку + для этого элемента, я открою Bottom Sheet Dialog с 2 кнопками.Yes или No.Как только я нажму «да», избранное будет сохранено.

Обычно я делаю это для обычных кликов, но как я могу реализовать это в RecyclerView Adapter для любого клика?

Класс адаптера

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

}

Класс нижнего листа

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

1 Ответ

0 голосов
/ 12 июня 2018

Вам нужно позиционировать после щелчка.

Установите OnClickListener в ViewHolder и используйте getAdapterPosition(), чтобы получить позицию по нажатому элементу, затем вызовите представление нижнего листа обуви

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

}
...