2017-03-24 168 views
-4

这是我的代码时,我实现获得项目计数1这表明非静态方法不能引用当我实现计数2显示它在return语句helpme空指针异常修复此的Android空指针异常

final int speedScroll = 1000; 
    final Handler handler = new Handler(); 
    final Runnable runnable = new Runnable() { 
     int count = 0; 
     @Override 
     public void run() { 
      if(count == Adapter4.getItemCount2()) 
       count =0; 
      if(count < Adapter4.getItemCount2()){ 
       recyclerView4.smoothScrollToPosition(++count); 
       handler.postDelayed(this,speedScroll); 
      } 
     } 
    }; 
    handler.postDelayed(runnable,speedScroll); 
} 


@Override 
public int getItemCount() { 
    return albumList.size(); 
} 
public static int getItemCount2() { 

    List<Album4> albumList=null; 
     return albumList.size(); 
} 
+0

你快把它'null',你怎么能得到空变量的'size' ..尝试用)像'名单 albumList =新的ArrayList <>('这将返回'0'; –

+0

我假设变量'albumList'是全局变量,所以尝试删除或至少重命名您的'getItemCount2'方法中具有相同名称的变量 – Barak

+0

有两件事可能会导致您的错误的问题 1st是: @Override public int getItemCount(){ return albumList.size(); } 可能是albumList尚未初始化,这导致空例外。 2nd is: public static int getItemCount2(){ List albumList = null; return albumList.size(); } 你用null初始化列表,然后返回将导致null异常的大小。 –

回答

0

试试这个。假设变量albumList是全局的。和albumList不为空;

final int speedScroll = 1000; 
     final Handler handler = new Handler(); 
     final Runnable runnable = new Runnable() { 
      int count = 0; 
      @Override 
      public void run() { 
       if(count == albumList.size()) 
        count =0; 
       if(count < albumList.size()){ 
        recyclerView4.smoothScrollToPosition(++count); 
        handler.postDelayed(this,speedScroll); 
       } 
      } 
     }; 
     handler.postDelayed(runnable,speedScroll); 
    } 


    @Override 
    public int getItemCount() { 
     return albumList.size(); 
    }