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

无法将字符串转为整数,自定义ListView适配器相关技术求助

解决ArrayAdapter中「无法将字符串转为整数」的问题

嘿,我之前也碰到过这种“明明没做字符串转整数操作却报这个错”的情况,其实大概率是Adapter的初始化或者数据绑定环节出了隐性问题,给你梳理几个最常见的排查方向和解决办法:

  • 先检查Adapter初始化时的resource参数是否传错了
    你在创建ShowcaseAdapter实例的时候,是不是不小心把**字符串资源ID(比如R.string.xxx)**当成了Item布局的ID(R.layout.xxx_item)传给了构造方法?ArrayAdapter的第二个参数要求是布局资源ID,如果你传了字符串资源的整数ID,系统会尝试把这个ID对应的字符串当成布局来解析,直接就会触发“无法将字符串转为整数”的错误。
    举个例子,错误的写法:

    ShowcaseAdapter adapter = new ShowcaseAdapter(this, R.string.app_name, coinList);
    

    正确的应该是:

    ShowcaseAdapter adapter = new ShowcaseAdapter(this, R.layout.coin_item_layout, coinList);
    
  • 排查getView方法中的数据绑定逻辑
    虽然你没贴这部分代码,但很多时候这个错误是因为在绑定数据时,误调用了需要整数资源的方法重载。比如给TextView设置文本时,如果你传给setText()的是一个字符串,但不小心触发了setText(int)这个重载(这个方法会把参数当成字符串资源ID去查找),就会出问题。
    比如错误写法(假设coin.getPrice()返回的是String类型):

    // 这里会把字符串当成资源ID来解析,必然报错
    priceTv.setText(coin.getPrice());
    

    正确的写法应该是明确调用接受字符串的重载:

    priceTv.setText(String.valueOf(coin.getPrice()));
    // 如果coin.getPrice()是数字类型,直接转字符串也可以
    priceTv.setText(coin.getPrice().toString());
    
  • 检查Item布局中的资源引用是否有误
    有时候布局里的控件属性如果用错了资源类型也会触发类似错误,比如把字符串资源当成颜色、尺寸资源引用,或者反过来。比如android:textColor="@string/red_color"而不是@color/red_color,不过这种情况一般编译阶段就会提示,但也可以检查一下布局文件有没有这类低级错误。

如果以上几点都排查过还是没解决,可以把getView方法的代码和Item布局文件贴出来,我再帮你进一步定位~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 09:25:02