2015-05-06 3 views
15

Я хочу показать эти элементы внутри моего recyclerview, но он вообще не отображается, и я не вижу ошибки. Может быть, вы, ребята, можете мне помочь.android recyclerview не отображает элементы

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

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 деталей:

public class RecViewHolder extends RecyclerView.ViewHolder { 

    public TextView menuTeXT; 

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

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

и данные, которые я хочу поставить в мой recyclerview (что Безразлично» т):

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

} 

Заранее спасибо

+0

Вы создали объект MenuData и вызвали initializeData(), чтобы создать список, а затем передать его адаптеру? –

+0

Я не знаю, что вы имеете в виду. – svenvdz

+0

, когда вы пишете меню MenuRecAdapterRecAdapter = новый MenuRecAdapter (список); '' уже создан список? –

ответ

36

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

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

и ViewHolder остается тем же ...

public class RecViewHolder extends RecyclerView.ViewHolder { 

public TextView menuTeXT; 

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

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

также избавиться от класса MenuData. Вышеприведенный код должен работать нормально.

+0

спасибо, что не думал об этом;) – svenvdz

+2

Если бы я мог дать вам право голоса, я бы – svenvdz

+0

Рад, что я мог помочь. Хороший день :) –

0

Поскольку вы не получаете никаких данных, я думаю, проблема происходит в то время, вы передаете список в адаптер. Я вижу, что вы не сделали копию своего списка, поэтому вы передаете ссылку списка непосредственно в адаптер. Я предлагаю вам попробовать MenuRecAdapter menuRecAdapter = new MenuRecAdapter(new Arraylist(list));

+0

Все еще не получаю никаких предметов – svenvdz

+0

Я не видел, чтобы вы создали какой-либо экземпляр MenuData в своем коде. Конечно, ваш список пуст. – yongsunCN

Смежные вопросы