热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

ListView多布局展示异常数组下标越界

ListView多布局展示用处很多该异常如下:这是怎么回事呢?具体代码如下:publicstaticfinalintTYPE_MALE1;

ListView多布局展示用处很多
该异常如下:
这里写图片描述

这是怎么回事呢?
具体代码如下:

    public static final int TYPE_MALE = 1;
    public static final int TYPE_FEMALE = 2;
   @Override
    public int getViewTypeCount() {
        return 2;
    }
    @Override
    public int getItemViewType(int position) {
        String sex = list.get(position).getSex();
        switch (sex) {
            case "男":
                return TYPE_MALE;
            case "女":
                return TYPE_FEMALE;
            default:
                return TYPE_MALE;
        }
    }

TYPE_MALE = 1和TYPE_FEMALE = 2,这两个值不可以随意赋值,必须从0开始,一次增大

对代码做修正其他地方,无需修改就可以正常运行了

    public static final int TYPE_MALE = 0;
    public static final int TYPE_FEMALE = 1;
        @Override
    public int getViewTypeCount() {
        return 2;
    }
    @Override
    public int getItemViewType(int position) {
        String sex = list.get(position).getSex();
        switch (sex) {
            case "男":
                return TYPE_MALE;
            case "女":
                return TYPE_FEMALE;
            default:
                return TYPE_MALE;
        }
    }

listView的多布局展示中getView方法最重要,再次贴出该段代码

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        View ret = null;
        ViewHolder1 holder1 = null;
        ViewHolder2 holder2 = null;
        int type = getItemViewType(position);

        //进行复用,如果convertView为空,根据type生成对应布局
        if (convertView != null) {
            ret = convertView;
        } else {
            switch (type) {
                case TYPE_MALE:
                    ret = LayoutInflater.from(context).inflate(R.layout.item_man, null);
                    break;
                case TYPE_FEMALE:
                    ret = LayoutInflater.from(context).inflate(R.layout.item_femal, null);
                    break;
            }
        }
        //实例化ViewHolder ,findViewById
        switch (type) {
            case TYPE_MALE:
                holder1 = (ViewHolder1) ret.getTag();
                if (holder1 == null) {
                    holder1 = new ViewHolder1();
                    holder1.man_image = ((ImageView) ret.findViewById(R.id.man_image));
                    holder1.man_name = ((TextView) ret.findViewById(R.id.man_name));
                    holder1.sex = ((TextView) ret.findViewById(R.id.sex));
                    ret.setTag(holder1);
                }
                break;
            case TYPE_FEMALE:
                holder2 = (ViewHolder2) ret.getTag();
                if (holder2 == null) {
                    holder2 = new ViewHolder2();
                    holder2.female_image_One= ((ImageView) ret.findViewById(R.id.femal_image_one));
                    holder2.female_image_two = ((ImageView) ret.findViewById(R.id.femal_image_two));
                    holder2.female_name = ((TextView) ret.findViewById(R.id.femal_name));
                    holder2.sex = ((TextView) ret.findViewById(R.id.sex));
                    ret.setTag(holder2);
                }
                break;
        }
        //进行赋值
        switch (type) {
            case TYPE_MALE:
                holder1.man_image.setImageResource(list.get(position).getImage());
                holder1.man_name.setText(list.get(position).getName());
                holder1.sex.setText(list.get(position).getSex());
                break;
            case TYPE_FEMALE:
                holder2.female_image_one.setImageResource(list.get(position).getImage());
                holder2.female_image_two.setImageResource(list.get(position).getImage());
                holder2.female_name.setText(list.get(position).getName());
                holder2.sex.setText(list.get(position).getSex());
                break;
        }
        return ret;
    }

推荐阅读
  • 在Android中实现黑客帝国风格的数字雨效果
    本文将详细介绍如何在Android平台上利用自定义View实现类似《黑客帝国》中的数字雨效果。通过实例代码,我们将探讨如何设置文字颜色、大小,以及如何控制数字下落的速度和间隔。 ... [详细]
  • 本文详细介绍了 `org.apache.tinkerpop.gremlin.structure.VertexProperty` 类中的 `key()` 方法,并提供了多个实际应用的代码示例。通过这些示例,读者可以更好地理解该方法在图数据库操作中的具体用途。 ... [详细]
  • 本文详细探讨了 Android Service 组件中 onStartCommand 方法的四种不同返回值及其应用场景。Service 可以在后台执行长时间的操作,无需提供用户界面,支持通过启动和绑定两种方式创建。 ... [详细]
  • 一、使用Microsoft.Office.Interop.Excel.DLL需要安装Office代码如下:2publicstaticboolExportExcel(S ... [详细]
  • 尽管在WPF中工作了一段时间,但在菜单控件的样式设置上遇到了一些基础问题,特别是关于如何正确配置前景色和背景色。 ... [详细]
  • td{border:1pxsolid#808080;}参考:和FMX相关的类(表)TFmxObjectIFreeNotification ... [详细]
  • Beetl是一款先进的Java模板引擎,以其丰富的功能、直观的语法、卓越的性能和易于维护的特点著称。它不仅适用于高响应需求的大型网站,也适合功能复杂的CMS管理系统,提供了一种全新的模板开发体验。 ... [详细]
  • 本文探讨了如何选择一个合适的序列化版本ID(serialVersionUID),包括使用生成器还是简单的整数,以及在不同情况下应如何处理序列化版本ID。 ... [详细]
  • 本文旨在探讨Swift中的Closure与Objective-C中的Block之间的区别与联系,通过定义、使用方式以及外部变量捕获等方面的比较,帮助开发者更好地理解这两种机制的特点及应用场景。 ... [详细]
  • 深入解析 C++ 中的 String 和 Vector
    本文详细介绍了 C++ 编程语言中 String 和 Vector 的使用方法及特性,旨在帮助开发者更好地理解和应用这两个重要的容器。 ... [详细]
  • 本文详细介绍如何在 Apache 中设置虚拟主机,包括基本配置和高级设置,帮助用户更好地理解和使用虚拟主机功能。 ... [详细]
  • 在尝试加载支持推送通知的iOS应用程序的Ad Hoc构建时,遇到了‘no valid aps-environment entitlement found for application’的错误提示。本文将探讨此错误的原因及多种可能的解决方案。 ... [详细]
  • 本文详细介绍了如何在Spring框架中设置事件发布器、定义事件监听器及响应事件的具体步骤。通过实现ApplicationEventPublisherAware接口来创建事件发布器,利用ApplicationEvent类定义自定义事件,并通过ApplicationListener接口来处理这些事件。 ... [详细]
  • 在1995年,Simon Plouffe 发现了一种特殊的求和方法来表示某些常数。两年后,Bailey 和 Borwein 在他们的论文中发表了这一发现,这种方法被命名为 Bailey-Borwein-Plouffe (BBP) 公式。该问题要求计算圆周率 π 的第 n 个十六进制数字。 ... [详细]
  • 长期从事ABAP开发工作的专业人士,在面对行业新趋势时,往往需要重新审视自己的发展方向。本文探讨了几位资深专家对ABAP未来走向的看法,以及开发者应如何调整技能以适应新的技术环境。 ... [详细]
author-avatar
三喜金融
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有