最近碰到了个很奇葩的问题 同样的代码在两部不同手机呈现不同的状态 一部三星手机运行流畅没有问题 一部国产联想手机 运行报数组越界的错误
找了好久 将可能出错的地方定位在了 adapter 里面 可到低是哪里出现越界了呢??
我是需要在一个listview里显示2个布局 需要在getItemViewType方法中返回两个数值 起初一个定义为1(CHAT_COME) 一个值为2(CHAT_TO) ok 应该没有什么问题,
特别注意了 一下 这个方法的奇葩规定 就是必须要返回一个0! 可还是出问题了 在联想手机上 特别重申一下 在三星手机没有问题
找了一下啊资料发现 原来在getItemViewType方法中返回的数值 必须要小于
getViewTypeCount方法返回的值!
也就是不管你需要在listview中加载几个layout 定义的type 只能从0 开始! 这就正好和 getItemViewType方法必须返回一个0 的规定 结合上了 只有从0 开始计数
type 的数值才会小于getViewTypeCount返回的值!
于是将两个返回的数 一个改为了0 (CHAT_COME)
一个改为1(CHAT_TO)
问题就解决了
让我不了解的是 为啥三星的手机上就不会有这样的问题?测试机有限 没有测试其他的国产手机是否会有同样的现象
public int getItemViewType(int position) {
//
TODO Auto-generated method stub
if(list.get(position).isComeMSG()){
return Common.CHAT_COME;
}else
return Common.CHAT_TO;
}
时间: 2024-10-08 08:17:50