web-dev-qa-db-fra.com

setLayoutManager NullPointErexception dans RecyclerView

J'essaie de recevoir une liste avec un tableau dans RecyclerView et d'obtenir une erreur:

Java.lang.NullPointerException: Attempt to invoke virtual method 
'void Android.support.v7.widget.RecyclerView.setLayoutManager
(Android.support.v7.widget.RecyclerView$LayoutManager)'on a null object reference

Widgets RecyclerView

   <Android.support.v7.widget.RecyclerView
        Android:id="@+id/drawerList"
        Android:layout_width="match_parent"
        Android:layout_height="wrap_content">
    </Android.support.v7.widget.RecyclerView>

J'ai essayé de déclarer LayoutManager à final, mais cela n'aide pas.

Code d'activité:

public class MainActivity extends ActionBarActivity {

private RecyclerView recyclerView;
private Toolbar toolbar;
private InfAdapter adapter;


@Override
protected void onCreate (Bundle savedInstanceState) {
    super.onCreate (savedInstanceState);
    setContentView (R.layout.activity_main_appbar);

    recyclerView = (RecyclerView) findViewById(R.id.drawerList);

    recyclerView.setLayoutManager(new LinearLayoutManager(this));

    InfAdapter mAdapter = new InfAdapter(this, getData());
    recyclerView.setAdapter(mAdapter);
    recyclerView.setItemAnimator(new DefaultItemAnimator());

    toolbar = (Toolbar) findViewById(R.id.app_bar);
    setSupportActionBar(toolbar);
    getSupportActionBar().setDisplayShowHomeEnabled(true);

}

Code adaptateur:

public class InfAdapter extends RecyclerView.Adapter<InfAdapter.MyViewHolder> {

  private final Context context;
    private  List<Information> data = Collections.emptyList();


    public InfAdapter(Context context, List<Information> data){
        this.data = data;
        this.context = context;
    }

    @Override
    public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.custom_row, parent, false);
        return new MyViewHolder(v);
    }


    @Override
    public void onBindViewHolder(MyViewHolder  holder, int position) {

        Information current  = data.get(position);
        holder.title.setText(current.title);
        holder.icon.setImageResource(current.iconid);
    }


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

    class MyViewHolder extends RecyclerView.ViewHolder{
    TextView title;
    ImageView icon;

    public MyViewHolder(View itemView) {

        super(itemView);
        title = (TextView) itemView.findViewById(R.id.listText);
        icon = (ImageView) itemView.findViewById(R.id.listIcon);

        }
    }
}

Qu'est-ce qui a peut-être mal tourné?

18
Ardi

Comme @StenSoft l'a noté dans les commentaires, le problème était dans setContentView (R.layout.activity_main_appbar); en raison d'un contenu de présentation d'activité incorrect, au lieu de setContentView (R.layout.activity_main);

26
Ardi

Dans mon cas, cette erreur vient du fait que je n'ai pas créé RecyclerView dans l'une de mes activités.

vérifiez la disposition de votre activité ou la disposition des fragments.

7
user2717057