【发布时间】:2022-01-20 04:18:52
【问题描述】:
我在 BottomSheet 中使用 RecyclerView。数据已成功获取,但无法对 RecyclerView 项目进行点击操作。这是我的
BottomSheetAdapter代码:
public class BottomSheetAdapter extends RecyclerView.Adapter<BottomSheetAdapter.ViewHolder> {
List<UserDetailsModel> userDetailsModelList;
Context context;
private Onitemclicklistenersuggestion listener;
public BottomSheetAdapter(List<UserDetailsModel> userDetailsModelList, Context context) {
this.userDetailsModelList = userDetailsModelList;
this.context = context;
}
@NonNull
@Override
public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view = LayoutInflater.from(context).inflate(R.layout.bottom_sheet_recycler_items, parent, false);
return new BottomSheetAdapter.ViewHolder(view);
}
@Override
public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
UserDetailsModel model = userDetailsModelList.get(position);
holder.firstNameLabel.setText(model.getFirst_name().trim());
}
@Override
public int getItemCount() {
return userDetailsModelList.size();
}
class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
TextView firstNameLabel;
public ViewHolder(@NonNull View itemView) {
super(itemView);
firstNameLabel = itemView.findViewById(R.id.firstNameLabel);
itemView.setOnClickListener(this);
}
@Override
public void onClick(View v) {
if (listener != null) {
int position = getAdapterPosition();
if (position != RecyclerView.NO_POSITION) {
listener.clicktoupdate(position);
}
}
}
}
public interface Onitemclicklistenersuggestion {
void clicktoupdate(int poistion);
}
public void setOnitemclicklistener(Onitemclicklistenersuggestion mlistener) {
listener = mlistener;
}
}
这是我的
BottomSheetDialog代码:
public class BottomSheetDialog extends BottomSheetDialogFragment
implements BottomSheetAdapter.Onitemclicklistenersuggestion {
bottomSheetAdapter = new BottomSheetAdapter(userDetailsModelList, getActivity());
bottomSheetRecycler.setAdapter(bottomSheetAdapter);
bottomSheetRecycler.setLayoutManager(new LinearLayoutManager(getActivity()));
bottomSheetAdapter.setOnitemclicklistener(new BottomSheetAdapter.Onitemclicklistenersuggestion() {
@Override
public void clicktoupdate(int poistion) {
Log.e("Pos", "Pos");
}
});
bottomSheetAdapter.notifyDataSetChanged();
}
@Override
public void clicktoupdate(int poistion) {
Toast.makeText(getContext(), ""+poistion, Toast.LENGTH_SHORT).show();
}
但在单击 RecyclerView 项目后,日志或 Toast 消息均未显示。请帮我修复它。数以百万计的感谢。
【问题讨论】:
-
点击按钮时
int position = getAdapterPosition();获得什么价值? -
我添加了一个 Log.e("POSITION", ""+position);在此行之后,但即使我单击 recyclerview 中的项目,它也不会被执行
-
使用
firstNameLabel.setOnClickListener(this);查看是否获取Toast或点击firstNameLabel登录。 -
是的,我现在正在获取日志语句,
-
但是,为什么不显示在项目点击上
标签: android android-recyclerview