【发布时间】:2017-01-10 19:47:45
【问题描述】:
我正在尝试覆盖 getItemViewType 并为我的页脚返回不同的视图类型,但函数内的整数比较失败:
此图像显示了一个调试会话,其中输入 position 为 21,私有列表 mValues 的大小为 21,但是当我按下“越过”时,条件代码被跳过。
如果两个整数相等,为什么position == mValues.size() 返回false?
我在运行之前清理并重建了我的项目。
更新:
当整数被硬编码时它可以工作:
但当我使用输入参数时不是:
更新
我在函数的第一行添加了一条 Log 语句
Log.e("MYAPP", "position: " + position + ", evaluates: " + (position == 21));
在我的显示器上我看到:position: 21, evaluates: true
但是,我在return FOOTER_VIEW; 处的断点从未被调用过,并且与页脚视图相关的函数也从未被调用过。
更新:
这是完整的适配器:https://gist.github.com/fergusom/79c6d5d9b1fd5e8348949d114a0159d5
请注意,我首先更新了代码以计算 boolean,但即使 boolean 在日志中打印出 true,它仍然失败
【问题讨论】:
-
mValues(运行时类型)是什么类型?您是否尝试进入 mValues.size()?你能验证它返回 21 吗?
-
如果我把
mValues.size()换成21还是不行,加了张图片说明这个 -
不要相信调试器!将日志语句放在
if的内部和外部。 -
由于代码优化,调试器可能会突出显示错误的行。
-
mValues 实际上是什么?