首页 > 代码库 > android BaseAdapter java.lang.ArrayIndexOutOfBoundsException!!!!!!!!!

android BaseAdapter java.lang.ArrayIndexOutOfBoundsException!!!!!!!!!

最近碰到了个很奇葩的问题 同样的代码在两部不同手机呈现不同的状态 一部三星手机运行流畅没有问题 一部国产联想手机 运行报数组越界的错误 

找了好久 将可能出错的地方定位在了 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;

}

android BaseAdapter java.lang.ArrayIndexOutOfBoundsException!!!!!!!!!