title: Attempt to read from field 'android.view.View android.support.v7.widget.RecyclerView$ViewHolder.itemView'
body: <p>I am trying to select recyclerview item randomly with delay.I need to start random selection method after fragment load without any user interaction,But getting the following error. Afterward I put it on ImageView click to check but again I am getting same exception.Will anybody here tell me where I am making a mistake,or what else could be better way to achieve this.Below is my code</p>
  
  <pre><code>    package com.apponative.bjja.fragments;
  
  import android.os.Bundle;
  import android.os.Handler;
  import android.support.annotation.Nullable;
  import android.support.v4.app.Fragment;
  import android.support.v7.widget.GridLayoutManager;
  import android.support.v7.widget.RecyclerView;
  import android.view.LayoutInflater;
  import android.view.View;
  import android.view.ViewGroup;
  
  import com.apponative.bjja.R;
  import com.apponative.bjja.adapters.AttackGridAdapter;
  
  import java.util.Random;
  
  public class Fragment_AttackGrid extends Fragment {
  
      View v;
      RecyclerView grid_attack;
      AttackGridAdapter attackGridAdapter;
      Bundle b;
      int itemCount;
      Handler randomHandler;
      Runnable randomRunnable;
      Random rand;
      int randomNum = 0;
      long emptyTime;
  
      @Nullable
      @Override
      public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
  
          v = inflater.inflate(R.layout.fragment_attack_grid, container, false);
  
          setUpViews();
  
          return v;
      }
  
      void setUpViews() {
  
          b = getArguments();
          itemCount = b.getInt(getString(R.string.item_count));
          rand = new Random();
          randomHandler = new Handler();
  
          grid_attack = (RecyclerView) v.findViewById(R.id.attack_grid);
          RecyclerView.LayoutManager layoutManager = new GridLayoutManager(getActivity(), 4);
  
          grid_attack.setLayoutManager(layoutManager);
          attackGridAdapter = new AttackGridAdapter(getActivity(), itemCount);
          grid_attack.setAdapter(attackGridAdapter);
  
          v.findViewById(R.id.belt_black).setOnClickListener(new View.OnClickListener() {
              @Override
              public void onClick(View view) {
                  selectRandomly();
              }
          });
      }
  
      void selectRandomly() {
  
          for (int i = 0; i &lt; itemCount; i++) {
              emptyTime = emptyTime+1000;
              randomRunnable = new Runnable() {
                  @Override
                  public void run() {
                      grid_attack.findViewHolderForAdapterPosition(randomNum).itemView.setSelected(false);
                      randomNum = rand.nextInt((itemCount - 0) + 1) + 0;
                      grid_attack.findViewHolderForAdapterPosition(randomNum).itemView.setSelected(true);
                  }
              };
              randomHandler.postDelayed(randomRunnable, emptyTime);
  
          }
          emptyTime = emptyTime+2000;
          randomRunnable = new Runnable() {
              @Override
              public void run() {
                  grid_attack.findViewHolderForAdapterPosition(randomNum).itemView.performClick();
              }
          };
          randomHandler.postDelayed(randomRunnable, emptyTime);
      }
  
      @Override
      public void onResume() {
          super.onResume();
          //   selectRandomly();
      }
  }
  </code></pre>
  
  <p>At start I put </p>
  
  <blockquote>
    <p>selectRandomly()</p>
  </blockquote>
  
  <p>at </p>
  
  <blockquote>
    <p>onResume()</p>
  </blockquote>
  
  <p>method and I was getting an exception:</p>
  
  <pre><code>01-27 18:28:44.969 19041-19041/com.apponative.bjja E/AndroidRuntime: FATAL EXCEPTION: main
  Process: com.apponative.bjja, PID: 19041
  java.lang.NullPointerException: Attempt to read from field 'android.view.View android.support.v7.widget.RecyclerView$ViewHolder.itemView' on a null object reference                                                                                      at com.apponative.bjja.fragments.Fragment_AttackGrid$2.run(Fragment_AttackGrid.java:77)
      at android.os.Handler.handleCallback(Handler.java:739)
      at android.os.Handler.dispatchMessage(Handler.java:95)
      at android.os.Looper.loop(Looper.java:155)
      at android.app.ActivityThread.main(ActivityThread.java:5696)
      at java.lang.reflect.Method.invoke(Native Method)
      at java.lang.reflect.Method.invoke(Method.java:372)
      at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1028)
      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:823)
  </code></pre>
  
  <p>According to fragment lifecycle at <a href="https://developer.android.com/guide/components/fragments.html" rel="noreferrer">Fragment LifeCycle</a> onResume() and onStart() methods are called after view has been created. I tried putting my method there too, But no success.</p>