我通过回收站视图设置静态图像,但我得到空指针异常这里是我的代码和错误

时间:2016-09-16 06:29:03

标签: android

SquadMain.java

package com.example.gopalchettri.atletico_de_kolkata;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.GridLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.util.Log;
import java.util.ArrayList;
import java.util.List;
public class SquadMain extends AppCompatActivity {
 public List < SquadModel > Squad = new ArrayList < SquadModel > ();
 RecyclerView recyclerView;
 public ShowSquadAdapter sa;
 @Override
 protected void onCreate(@Nullable Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_squad);
  recyclerView = (RecyclerView) findViewById(R.id.rv_squad);
  recyclerView.setLayoutManager(new GridLayoutManager(getApplicationContext(), 2));
  Squad = preparedata();
  sa = new ShowSquadAdapter(getApplicationContext());
  recyclerView.setAdapter(sa);
  Log.e("Tag", "" + "size is : " + String.valueOf(Squad.size()));
 }
 public List < SquadModel > preparedata() {
  List < SquadModel > squadModels = new ArrayList < > ();
  squadModels.add(new SquadModel(R.drawable.p_juan, "Juan Calatayud"));
  squadModels.add(new SquadModel(R.drawable.p_amrinder, "Amrinder Singh"));
  squadModels.add(new SquadModel(R.drawable.p_kunzangbhutia, "Kunzang Bhutia"));
  squadModels.add(new SquadModel(R.drawable.p_nallappan, "Nallappan Mohanraj"));
  squadModels.add(new SquadModel(R.drawable.p_arnab, "Arnab Mondal"));
  squadModels.add(new SquadModel(R.drawable.p_denzil, "Denzil Franco"));
  squadModels.add(new SquadModel(R.drawable.p_syedrahim, "Syed Rahim Nabi"));
  squadModels.add(new SquadModel(R.drawable.p_rinoanto, "Rino Anto"));
  squadModels.add(new SquadModel(R.drawable.p_augustinfernandes, "Augustin Fernandes"));
  squadModels.add(new SquadModel(R.drawable.p_jaimegavilan, "Jaime Gavilán"));
  squadModels.add(new SquadModel(R.drawable.p_borja_, "Borja Fernández"));
  squadModels.add(new SquadModel(R.drawable.p_clifford, "Clifford Miranda"));
  squadModels.add(new SquadModel(R.drawable.p_arataizumi, "Arata Izumi"));
  squadModels.add(new SquadModel(R.drawable.p_sameehgdoutie, "Sameehg Doutie"));
  squadModels.add(new SquadModel(R.drawable.p_nato, "Ofentse Nato"));
  squadModels.add(new SquadModel(R.drawable.p_jorge, "Jorge Alonso"));
  squadModels.add(new SquadModel(R.drawable.p_baljit, "Baljit Sahni"));
  squadModels.add(new SquadModel(R.drawable.p_hume, "Iain Hume"));
  squadModels.add(new SquadModel(R.drawable.p_helder, "Hélder Postiga"));
  squadModels.add(new SquadModel(R.drawable.p_nadong, "Nadong Bhutia"));
  squadModels.add(new SquadModel(R.drawable.p_sushil, "Sushil Kumar Singh"));
  squadModels.add(new SquadModel(R.drawable.p_rafique, "Mohammed Rafique"));
  squadModels.add(new SquadModel(R.drawable.p_dejan, "Dejan Lekić"));
  squadModels.add(new SquadModel(R.drawable.p_jose, "José Luis Espinosa Arroyo"));
  squadModels.add(new SquadModel(R.drawable.p_stephen, "Stephen Pearson"));
  squadModels.add(new SquadModel(R.drawable.c_molina, "José Francisco Molina"));
  squadModels.add(new SquadModel(R.drawable.tm_avishek, "Avishek Bhattacharjee"));
  Log.e("tag", String.valueOf(squadModels.size()));
  sa.squad = squadModels;
  sa.notifyDataSetChanged();
  return squadModels;
 }
}

SquadModel:

package com.example.gopalchettri.atletico_de_kolkata;


public class SquadModel {

 String name;
 int iconid;

 public SquadModel(int iconid, String name) {
  super();
  this.name = name;
  this.iconid = iconid;
 }

 public String getName() {
  return name;
 }

 public int getIconid() {
  return iconid;
 }
}

ShowSquadAdapter:

package com.example.gopalchettri.atletico_de_kolkata;

import android.content.Context;
import android.support.v7.widget.RecyclerView;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;

import java.util.ArrayList;
import java.util.List;


public class ShowSquadAdapter extends RecyclerView.Adapter < ShowSquadAdapter.ViewHolder > {

 Context con;
 public List < SquadModel > squad = new ArrayList < SquadModel > ();

 public ShowSquadAdapter(Context con) {
  this.con = con;
 }
 @Override
 public ShowSquadAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
  View view = LayoutInflater.from(con).inflate(R.layout.card_squad, parent, false);
  ViewHolder vh = new ViewHolder(view);
  return vh;
 }

 @Override
 public void onBindViewHolder(ShowSquadAdapter.ViewHolder holder, int position) {

  SquadModel squadModel = squad.get(position);

  holder.imvplayer.setImageResource(squadModel.getIconid());
  holder.tvplayername.setText(squadModel.getName());





 }

 @Override
 public int getItemCount() {
  Log.e("tag", String.valueOf(squad.size()));
  return squad.size();

 }

 public class ViewHolder extends RecyclerView.ViewHolder {

  TextView tvplayername;
  ImageView imvplayer;


  public ViewHolder(View itemView) {
   super(itemView);

   imvplayer = (ImageView) itemView.findViewById(R.id.squad);
   tvplayername = (TextView) itemView.findViewById(R.id.tvsquad);


  }
 }
}
  

错误

error: Caused by: java.lang.NullPointerException: Attempt to write to field 'java.util.List com.example.gopalchettri.atletico_de_kolkata.ShowSquadAdapter.squad'
 on a null object reference
 at com.example.gopalchettri.atletico_de_kolkata.SquadMain.preparedata(SquadMain.java: 69)
 at com.example.gopalchettri.atletico_de_kolkata.SquadMain.onCreate(SquadMain.java: 29)
 at android.app.Activity.performCreate(Activity.java: 5933)
 at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java: 1105)
 at android.app.ActivityThread.performLaunchActivity(ActivityThread.java: 2251)
 at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java: 2360) 
 at android.app.ActivityThread.access$800(ActivityThread.java: 144) 
 at android.app.ActivityThread$H.handleMessage(ActivityThread.java: 1278) 
 at android.os.Handler.dispatchMessage(Handler.java: 102) 
 at android.os.Looper.loop(Looper.java: 135) 
 at android.app.ActivityThread.main(ActivityThread.java: 5221) 
 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: 899) 
 at com.android.internal.os.ZygoteInit.main(ZygoteInit.java: 694) 

1 个答案:

答案 0 :(得分:0)

在onCreate()方法中,在方法 preparedata()之后调用 sa = new ShowSquadAdapter(getApplicationContext()); 。因此 preparedata()中的 sa.squad = squadModels; 将抛出 NullPointerExeption

首先必须初始化ShowSquadAdapter:

sa = new ShowSquadAdapter(getApplicationContext());
Squad = preparedata();