You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android RecyclerView中为TextView添加序号时出现报错求助

解决RecyclerView中TextView添加序号的报错问题

嗨,我来帮你排查下问题所在,你的代码里有两个关键错误导致了报错:


1. 完全多余的for循环

onBindViewHolder方法本身就是为每个列表item单独执行绑定逻辑的,你在这里加了一个遍历整个列表的for循环,不仅完全没必要,还会导致每个item最后都会被设置成列表的总长度(循环结束后i等于listitems2.size()),完全达不到逐个设置序号的目的,还浪费性能。

2. TextView的setText(int)用错了

TextView的setText(int)方法是用来加载字符串资源ID的(比如R.string.hello),而不是直接显示数字。你直接传入i这个int类型的序号,系统会去查找对应ID的资源,找不到就会抛出Resources$NotFoundException,这就是你报错的核心原因。


正确的写法应该是这样:

直接利用RecyclerView提供的position参数(它是当前item的索引,从0开始),把序号转成字符串后设置给TextView就行:

@Override 
public void onBindViewHolder(final RViewHolder holder, final int position) { 
    final commdtylist listitem = listitems2.get(position); 
    // position从0开始,所以+1得到从1开始的序号,转成字符串设置
    holder.comm_code.setText(String.valueOf(position + 1)); 
    // 这里可以继续设置listitem的其他数据,比如商品名称之类的
    // holder.comm_name.setText(listitem.getCommodityName());
}

额外说明:

  • 如果你的列表有头部视图或者其他特殊布局,需要根据实际情况调整序号的计算方式(比如跳过头部的position),但普通列表用上面的代码就足够了
  • 永远不要在onBindViewHolder里做循环或者耗时操作,这个方法会在列表滚动时频繁调用,会严重影响列表的流畅性

内容的提问来源于stack exchange,提问作者user9427911

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 06:27:26