12

Staram się odbierać listy z tablicy w RecyclerView i dostać błąd:setLayoutManager NullPointException w 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 

RecyclerView widgetu

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

Próbowałem zadeklarować LayoutManager do finału, ale nie pomaga.

kod aktywny: Kod

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

     } 
    } 
} 

Co może pójść nie tak?

+0

możliwy duplikat [Co to jest wyjątek typu Null Pointer i jak mogę go naprawić?] (Http://stackoverflow.com/questions/218384/what-is-a-null-pointer-exception-andhow -do-i-fix-it) – Simon

+1

czy możesz też opublikować swój kod układu ... czy twój kod układu ma widok RecyclerView podobny do tego ' Psypher

+1

@Ranjith yes , to jest – Ardi

Odpowiedz

15

Jak zauważył @StenSoft w komentarzach problem był w setContentView (R.layout.activity_main_appbar); powodu niewłaściwej zawartości układu aktywność, zamiast setContentView (R.layout.activity_main);

+0

Pracował jak Urok! –

3

W moim przypadku ten błąd chodzi, bo nie tworzyć RecyclerView w jednym z mojej działalności.

sprawdź układ swojego działania lub układ fragmentu.