如何为展示数据库数据的RecyclerView CardView设置点击事件并解决报错
解决RecyclerView卡片点击传参的报错问题
错误根源
你写的holder.Name_id.get(position)完全搞错了对象类型——Name_id是TextView控件,它根本没有get(position)方法,这就是报错的核心原因。
修复方案
直接从数据源usersList里获取当前位置的Users对象数据即可,你在onBindViewHolder开头已经拿到了这个对象,直接用它的getter方法传参就行。另外注意:你原来的代码漏了启动Activity的步骤,补上后点击卡片才会跳转。
修改onBindViewHolder中的点击事件代码:
@Override public void onBindViewHolder(@NonNull UserHolder holder, int position) { Users users=usersList.get(position); holder.Name_id.setText(users.getName()); holder.Type_id.setText(users.getType()); holder.Location_id.setText(users.getLocation()); holder.cardView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Intent intent = new Intent(context, cardviewclick.class); // 直接用已获取的users对象拿原始数据,无需从TextView读取 intent.putExtra("Name", users.getName()); intent.putExtra("Type", users.getType()); intent.putExtra("Location", users.getLocation()); // 启动详情页Activity context.startActivity(intent); } }); }
额外提醒
从数据源直接拿数据比从TextView读取文本更可靠:如果后续你对TextView的显示文本做了格式化(比如加前缀、转格式),从数据源获取的原始数据才是准确的,不会出现格式错误。
内容的提问来源于stack exchange,提问作者LucK
相关产品推荐
相关产品推荐

