美文网首页
记一次帮同事解决数组越界的bug

记一次帮同事解决数组越界的bug

作者: 努力深耕Android的小透明 | 来源:发表于2017-12-06 13:59 被阅读108次

前天,当我正在愉快地写完代码测试自己的功能时,app突然崩了.
其实我的内心是崩溃的...
于是,我查看了下logcat,发现了以下错误

12-04 09:29:30.237 10329-10329/? E/CrashReport: java.lang.IndexOutOfBoundsException: Invalid index 4, size is 0
                                                    at java.util.ArrayList.throwIndexOutOfBoundsException(ArrayList.java:255)
                                                    at java.util.ArrayList.get(ArrayList.java:308)
                                                    at com.test.activity.ChooseCityActivity$ListAdapter.getView(ChooseCityActivity.java:553)
                                                

这是一个很明显的数组越界错误,于是查看错误代码处,发现是在listview的
adapter的getView方法里出现了问题:
程序崩溃的原因是: 当用户没有获取到数据list时(可能是网络状态不好或服务器异常),就已经判断了position的大,就会出现数组越界的风险,
于是在代码中加上了这样一行代码进行判断list是否为空:

                    if (list != null && list.size() > 0) {

修改后代码如下:

   @Override
        public View getView(int position, View convertView, ViewGroup parent) {
                ....
                if (position >= 1) {
                    //为解决未获取到数据时 数据越界的bug
                    if (list != null && list.size() > 0) {
                        holder.name.setText(list.get(position).getName());
                        String currentStr = getAlpha(list.get(position).getPinyin());
                        String previewStr = (position - 1) >= 0 ? getAlpha(list
                                .get(position - 1).getPinyin()) : " ";
                        if (!previewStr.equals(currentStr)) {
                            holder.alpha.setVisibility(View.VISIBLE);
                            holder.alpha.setText(currentStr);
                        } else {
                            holder.alpha.setVisibility(View.GONE);
                        }
                    }
                }
            }
            return convertView;
        }

ok,完美撒花解决问题~~
跟同事核对了以下happy,happy地提交了代码~

相关文章

  • 记一次帮同事解决数组越界的bug

    前天,当我正在愉快地写完代码测试自己的功能时,app突然崩了.其实我的内心是崩溃的...于是,我查看了下logca...

  • iOS 利用Method Swizzling解决线上数组越界的问

    最近项目上线以后,想解决下线上的bug,发现数组越界的问题还存在不少,特别空数组越界。 为了提高提高用户体验,减少...

  • KTVHTTPCache bug记录

    KTVHTTPCache这个框架有闪退的bug:1.HTTPConnection 数组越界的bug原始代码 修改后的:

  • java.lang.ArrayIndexOutOfBoundsE

    名字上看是数组下标越界错误,解决方法就是查看为什么下标越界。 如下: 12代表越界数组的下标, originalD...

  • 【PAT】段错误提示

    1、原因 大概率数组越界 2、解决

  • 日常受气之一

    今天,我帮一个同事解决生产bug,另一个同事和测试站在我身后看着我解决,老大以为是我的bug,把我p了一顿。

  • Runtime 四之交换方法防止整个项目数组越界

    数组取数据组越界的问题我想每个程序?都遇到过无数次,我们这章不谈如何解决bug,不谈这样做是否正确, 只谈如何通过...

  • iOS Crash三部曲~之二常见Crash

    1 越界 1.1 数组越界 第1类崩溃就是越界问题,最常见的就是数组越界。 崩溃信息: 分析: 可以看出当前数组的...

  • 学习OC

    1.数组越界,字典取空问题解决 实现一个数组或者字典的扩展方法,判断数组或者字典是否为空或者越界,如果是返回对象,...

  • 为什么又加班了?

    10月29号晚:太忙了,同事又请假了帮不了忙,晚上才有时间解决bug,发现bug是个陈年bug,需求不了解,代码写...

网友评论

      本文标题:记一次帮同事解决数组越界的bug

      本文链接:https://www.haomeiwen.com/subject/jnekixtx.html