【问题标题】:java.lang.IndexOutOfBoundsException: Invalid index 0, size is 0 only oncejava.lang.IndexOutOfBoundsException: 无效的索引 0,大小只有一次为 0
【发布时间】:2015-07-22 11:13:38
【问题描述】:

我在适配器的getItem 只收到一次以下异常。可能是设备或连接问题,但我的应用程序崩溃了。如果出现问题,我如何确保我的应用程序不会因此异常而崩溃设备?

 java.lang.IndexOutOfBoundsException: Invalid index 0, size is 0

适配器

   @Override
        public Object getItem(int position) {
            return items.get(position);
        }

【问题讨论】:

  • 使用异常处理避免 ANR
  • 或者,您在尝试获取物品之前实际检查容器的大小如何?
  • @Override public Object getItem(int position) { if(items.size()==0) return 0;返回 items.get(position); }

标签: android adapter indexoutofboundsexception


【解决方案1】:
  @Override
  public Object getItem(int position) {
      if(items.size() == 0) {
            return null;
      }
      return items.get(position);
  }

【讨论】:

    【解决方案2】:

    有两种方法可以解决这个问题:

    第一种方式:

    您应该在 BaseAdapter 中添加以下代码:

     @Override
     public int getCount() {
        return items.size();
     }
    

    它将返回 ArrayList 的元素数。

    在您的情况下,如果 ArrayList 为空,它将返回 0,因此 getItem(int pos) 不会调用。

    第二种方式:

    if(!item.isEmpty()){
      // Set Adapter Here
    }else{
     // No data in ArrayList
    } 
    

    希望对你有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-05-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多