RecyclerView结合JDBC读取MySQL:RadioButton仅首个显示问题求助
哥们,我看你用JDBC连接MySQL,把数据加载到RecyclerView的TextView和三个RadioButton里,但只有第一个RadioButton能显示内容,剩下俩空着。这种情况大概率是视图绑定或者数据赋值环节漏了东西,咱一步步来排查解决:
先确认数据本身没问题
首先得排除是数据库查询出来的数据本身就缺内容的情况:
- 在你从JDBC查询完数据、把数据塞进
VoteItem集合之后,加个日志或者临时Toast,打印每一条VoteItem的三个选项值,看看是不是只有第一个选项有值,另外两个本来就是空的。 - 检查你的SQL查询语句,确保把三个选项的字段都查出来了,比如别只写了
SELECT title, option1 FROM xxx,要把option2和option3也加上。
检查RecyclerView Adapter的视图绑定
这是最容易踩坑的地方:
- 打开你的Adapter的
ViewHolder类,确认三个RadioButton都通过findViewById绑定了对应的XML ID,别只绑了第一个,另外两个漏写了。示例代码应该是这样的:
public class MyViewHolder extends RecyclerView.ViewHolder { TextView itemTitle; RadioButton optionRb1, optionRb2, optionRb3; public MyViewHolder(View itemView) { super(itemView); itemTitle = itemView.findViewById(R.id.tv_vote_title); optionRb1 = itemView.findViewById(R.id.rb_option1); optionRb2 = itemView.findViewById(R.id.rb_option2); // 这里必须要有! optionRb3 = itemView.findViewById(R.id.rb_option3); // 还有这个! } }
- 同时核对XML布局文件里三个RadioButton的ID,确保和代码里写的完全一致,别打错字母或者数字。
确认数据赋值环节没遗漏
在onBindViewHolder方法里,要给三个RadioButton都设置文本,别只给第一个赋值:
@Override public void onBindViewHolder(MyViewHolder holder, int position) { VoteItem currentItem = itemArrayList.get(position); holder.itemTitle.setText(currentItem.getVoteTitle()); // 三个RadioButton都要赋值! holder.optionRb1.setText(currentItem.getOption1()); holder.optionRb2.setText(currentItem.getOption2()); holder.optionRb3.setText(currentItem.getOption3()); }
如果做完以上几步还是没解决,可以把你的Adapter完整代码、VoteItem类代码以及XML布局代码贴出来,咱再精准定位问题~
内容的提问来源于stack exchange,提问作者A.Mootaz
相关产品推荐
相关产品推荐

