12

sto cercando di ricevere un elenco con una serie di RecyclerView e ottenere errore:setLayoutManager NullPointException in RecyclerView

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 

widget di RecyclerView di

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

ho cercato di dichiarare LayoutManager alla finale, ma non aiuta

Codice attività: Codice

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

} 

Adapter:

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

     } 
    } 
} 

Qual è forse andato storto?

+0

possibile duplicato di [Che cosa è un'eccezione di puntatore nullo e come si risolve?] (Http://stackoverflow.com/questions/218384/what-is-a-null-pointer-exception-and-how -do-i-fix-it) – Simon

+1

puoi pubblicare anche il tuo codice di layout .... il tuo codice di layout ha RecyclerView come questo ' Psypher

+1

@Ranjith yes , questo è incluso – Ardi

risposta

15

Come @StenSoft notato nei commenti il ​​problema era in setContentView (R.layout.activity_main_appbar); a causa del contenuto di layout di attività di sbagliato, invece di setContentView (R.layout.activity_main);

+0

Ha funzionato come fascino! –

3

Nel mio caso questo errore viene perché non ho creato RecyclerView in uno della mia attività.

controllare il layout dell'attività o il layout del frammento.