美文网首页
记一次帮同事解决数组越界的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

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