web-dev-qa-db-de.com

setLayoutManager NullPointErexception in RecyclerView

Ich versuche, eine Liste mit einem Array in RecyclerView zu erhalten und erhalte die Fehlermeldung:

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

RecyclerView-Widget

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

Ich habe versucht, LayoutManager als final zu deklarieren, aber es hilft nicht.

Aktivitätscode:

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);

}

Adaptercode:

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);

        }
    }
}

Was ist möglicherweise schief gelaufen?

18
Ardi

Wie @StenSoft in Kommentaren feststellte, lag das Problem in setContentView (R.layout.activity_main_appbar); wegen des falschen Inhalts des Aktivitätslayouts anstelle von setContentView (R.layout.activity_main);.

26
Ardi

In meinem Fall kommt dieser Fehler, weil ich RecyclerView in einer meiner Aktivitäten nicht erstellt habe.

überprüfen Sie Ihr Aktivitätslayout oder Fragmentlayout.

7
user2717057