ListView 适配器实现getviewtypecount() 数组越界IndexOutOfBoundException

  ListView中Item的多布局显示,需要用到了getviewtypecount和getItemViewType这两个重写方法,但是做完后出现了如下提示错误:
java.lang.ArrayIndexOutOfBoundsException: (数组越界)

  搜了原因,居然是getItemViewType这里里面返回的Type必须是从0开始的,如果getviewtypecount等于2,那么getItemViewType返回的数值是从0~1的常数。简单说,在刚开始设置type常量时,是从0开始递增的,不能乱设置。如下所示:

  

    @Override
    public int getViewTypeCount() {
        return 2;
    }

    @Override
    public int getItemViewType(int position) {
        MyMsg myMsg = mDatas.get(position);
        String isRead = myMsg.getIsRead();
        if ("1".equals(isRead)) {
            return 0;
        } else {
            return 1;
        }
    }

  上面代码中,在getItemViewType中,我们只能返回0,1; 记住,只能从0开始,而不能是1,2。

  再查下官方文档,有这样的一句话:
 
Note: Integers must be in the range 0 to getViewTypeCount() - 1.

  如此这般,就OK啦!欢迎指正!
  如有疑问,欢迎进QQ群:487786925( Android研发村 )

时间: 2024-10-28 05:02:21

ListView 适配器实现getviewtypecount() 数组越界IndexOutOfBoundException的相关文章

ExpandableListView动态刷新出现数组越界,求帮忙

问题描述 ExpandableListView动态刷新出现数组越界,求帮忙 childView是4个textView组成,GroupView就是一个textView. 本身是3个组,当刷新变成4个组时,出现数组越界 这行代码:info = map11.get(key).get(childPosition); 现在不知道怎么解决数组越界问题,listview的数组越界可以用list.clear()方法, 这个ExpandableListView是第一次用,知道的帮忙下,谢谢了.急用 部分代码如下:

java-IndexOutOfBoundsException数组越界的问题求解

问题描述 IndexOutOfBoundsException数组越界的问题求解 D/AndroidRuntime( 7415): Shutting down VM --------- beginning of crash E/AndroidRuntime( 7415): FATAL EXCEPTION: main E/AndroidRuntime( 7415): Process: com.android.settings, PID: 7415 E/AndroidRuntime( 7415): j

各位大神,传递图片问题,学长说是数组越界,不知道怎么解决

问题描述 各位大神,传递图片问题,学长说是数组越界,不知道怎么解决 图片传递代码图片接收代码 解决方案 不是内存溢出,而是有变量为null 解决方案二: 我觉得你的学长判断是错误的,因为错误消息已经写了:NullPointerException,这个异常消息的含义就是说有空对象调用了方法.所以不会是内存溢出(不完全排除,但可能性很小),而你所指出的那行代码上有一个空对象调用了方法. 我看过你的代码,你箭头所指向的代码一共有4个对象调用了方法,其中intent对象已经看到了你new的代码,所以它不

string-java选择排序使用swap()函数出现数组越界报错

问题描述 java选择排序使用swap()函数出现数组越界报错 class SelectSort{ public static void Swap(int[] arr,int i,int j){ int temp = arr[i]; arr[i] = arr[j]; arr[j] = temp; } public static void PrintArray(int[] Array){ for(int i=0;i<Array.length;i++){ System.out.print("

java小白求大神帮看一下为什么会发生数组越界。代码如下:

问题描述 java小白求大神帮看一下为什么会发生数组越界.代码如下: package arraytest; public class ArrayTestSort { public static void main(String[] args) { int i,j=0; int[] arr = new int[]{100,40,60,87,34,11,56,0}; int temp = 0; for(i = 0;i<arr.length;i++){ for(j = 0;j<arr.length-

java连连看数字换图片数组越界问题

问题描述 java连连看数字换图片数组越界问题 Jbutton 按钮数字换成图片后,只有部分按钮有图片,有的按钮上的图片不能显示.提示说数组越界,但具体不知道怎么回事.按钮数组是6*5,存储按钮位置的数组是8*7,调用图片的代码private static Icon[] icons = new ImageIcon[6*5]; private static final String imgDir=""d:/shuiguo"";static{ try{ File dir

如何处理数组越界而不会让程序崩溃?

如何处理数组越界而不会让程序崩溃? 数组越界是非常常见的现象,有时候,你的程序中,因为数组越界而崩溃了,很难找,理想的状态是,数组越界的时候给我们返回nil就好了. 请看下面这个例子: // // RootViewController.m // BeyondTheMark // // Copyright (c) 2014年 Y.X. All rights reserved. // #import "RootViewController.h" @interface RootViewCon

c语言-C语言数组越界的含义

问题描述 C语言数组越界的含义 听同学说C语言数组越界会导致出错,我试验了下不会,谁能写一个数组越界出错的例子? 解决方案 这个不一定能观察到,因为C没有越界检查,你可以这么写: int a[10]; int i=0; while (true) { a[i++] = i; } 肯定会报错 解决方案二: 越界不就是超过数组的大小,随便写个拷贝就行了 解决方案三: 例如你声明数组a[10],如果访问a[10]就发生越界错误,越界错误的本质是访问了未知内存空间,如果之前此区域内存被使用后,此时访问获得

c-为什么数组越界后仍然能够输出hello?

问题描述 为什么数组越界后仍然能够输出hello? #include<stdio.h> void hello(void) { fprintf(stderr,"hello!n"); } void fun(void) { void *buf[10]; static int i; for(i=0;i<100;i++) { buf[i]=hello; } } int main(void) { int buf[1000]; fun(); return 0; } 解决方案 C++