2015-05-06 17 views
15

Voglio mostrare questi elementi all'interno del mio recyclerview ma non si vede affatto e non riesco a vedere l'errore. Forse voi ragazzi potete darmi una mano.android recyclerview non visualizza gli articoli

MainActivity.java

RecyclerView recyclerView = (RecyclerView)findViewById(R.id.rec); 
List<MenuData> list = new ArrayList<>(); 
     recyclerView.setHasFixedSize(true); 
     LinearLayoutManager linearLayoutManager = new LinearLayoutManager(this); 
     linearLayoutManager.setOrientation(LinearLayoutManager.VERTICAL); 
     recyclerView.setLayoutManager(linearLayoutManager); 

     MenuRecAdapter menuRecAdapter = new MenuRecAdapter(list); 
     recyclerView.setAdapter(menuRecAdapter); 

adattatore RecyclerView:

public class MenuRecAdapter extends RecyclerView.Adapter<RecViewHolder>{ 

    private List<MenuData> mList; 
    Activity context; 

    public MenuRecAdapter(List<MenuData> mList){ 
     this.mList = mList; 
    } 

    public int getItemCount(){ 
     return mList.size(); 
    } 

    public RecViewHolder onCreateViewHolder(ViewGroup viewGroup, int position){ 

     View v = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.menuitem, viewGroup, false); 
     RecViewHolder pvh = new RecViewHolder(v); 
     return pvh; 
    } 

    public void onBindViewHolder(RecViewHolder holder, int i){ 
     holder.menuTeXT.setText(mList.get(i).text); 
    } 

    @Override 
    public void onAttachedToRecyclerView(RecyclerView recyclerView) { 
     super.onAttachedToRecyclerView(recyclerView); 
    } 

} 

ViewHolder delle voci:

public class RecViewHolder extends RecyclerView.ViewHolder { 

    public TextView menuTeXT; 

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

     menuTeXT = (TextView)itemView.findViewById(R.id.menuTXT); 
    } 
} 

ed i dati che voglio mettere nel mio recyclerview (ciò che doesn' t show):

class MenuData { 

    String text; 

    MenuData(String text){ 
     this.text = text; 
    } 

    private List<MenuData> list; 

    private void initializeData(){ 
     list = new ArrayList<>(); 
     list.add(new MenuData("Featured")); 
     list.add(new MenuData("Categories")); 
     list.add(new MenuData("Sell")); 
     list.add(new MenuData("Settings")); 
     list.add(new MenuData("Logout")); 
    } 

} 

Grazie in anticipo

+0

hai creato un oggetto di MenuData e chiama initializeData() per creare un elenco e quindi passarlo all'adattatore? –

+0

Non so davvero cosa intendi. – svenvdz

+0

quando scrivi 'MenuRecAdapter menuRecAdapter = new MenuRecAdapter (lista);' è la 'lista' già creata? –

risposta

36

In MainActivity

ArrayList<String> list = new ArrayList<>(); 
list.add("something1"); 
list.add("something2"); 

RecyclerView recyclerView = (RecyclerView)findViewById(R.id.rec); 
recyclerView.setHasFixedSize(true); 

LinearLayoutManager linearLayoutManager = new LinearLayoutManager(this); 
linearLayoutManager.setOrientation(LinearLayoutManager.VERTICAL); 
recyclerView.setLayoutManager(linearLayoutManager); 

MenuRecAdapter menuRecAdapter = new MenuRecAdapter(list); 
recyclerView.setAdapter(menuRecAdapter); 

adattatore RecyclerView

public class MenuRecAdapter extends RecyclerView.Adapter<RecViewHolder>{ 

private ArrayList<String> mList = new ArrayList<>(); 
Activity context; 

public MenuRecAdapter(ArrayList<String> mList){ 
    this.mList = mList; 
} 

public int getItemCount(){ 
    return mList.size(); 
} 

public RecViewHolder onCreateViewHolder(ViewGroup viewGroup, int position){ 

    View v = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.menuitem, viewGroup, false); 
    RecViewHolder pvh = new RecViewHolder(v); 
    return pvh; 
} 

public void onBindViewHolder(RecViewHolder holder, int i){ 
    holder.menuTeXT.setText(mList.get(i)); 
} 

@Override 
public void onAttachedToRecyclerView(RecyclerView recyclerView) { 
    super.onAttachedToRecyclerView(recyclerView); 
} 
} 

e ViewHolder rimane lo stesso ...

public class RecViewHolder extends RecyclerView.ViewHolder { 

public TextView menuTeXT; 

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

    menuTeXT = (TextView)itemView.findViewById(R.id.menuTXT); 
} 
} 

anche sbarazzarsi di classe MenuData. Il codice sopra dovrebbe funzionare correttamente.

+0

grazie ha funzionato mai pensato a questo;) – svenvdz

+2

Se potessi darti un voto vorrei – svenvdz

+0

Contento di poterti aiutare. Buona giornata :) –

0

Dal momento che non si è trovato alcun dato, credo che il problema si verifica nel momento in cui passa la lista nel vostro adattatore. Vedo che non hai fatto la copia della tua lista, quindi stai passando il riferimento della lista direttamente nell'adattatore. Vi suggerisco di provare MenuRecAdapter menuRecAdapter = new MenuRecAdapter(new Arraylist(list));

+0

Ancora senza ottenere elementi – svenvdz

+0

Non ho visto che hai creato alcuna istanza di MenuData nel tuo codice. Ovviamente la tua lista è vuota. – yongsunCN

Problemi correlati