Android recyclerview не отображает элементы

Я хочу показать эти элементы внутри моего 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"));
    }

}

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

Ответы

Ответ 1

В 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. Вышеприведенный код должен работать нормально.

Ответ 2

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

Ответ 3

У меня та же проблема, я все сделал правильно, но все еще ничего. Показать кто-нибудь может помочь найти мои коды

Адаптер элемента для повторного просмотра (itemadapter.kt)

Класс ItemAdapter (контекст контекста: контекст, список вар: ArrayList): RecyclerView.Adapter() {переопределить fun onCreateViewHolder (parent: ViewGroup, viewType: Int): RecyclerView.ViewHolder {var v: View = LayoutInflater.from(context).inflate(R.layout.item_row, parent) return ItemHolder (v)}

override fun getItemCount(): Int {
    return list.size
}

override fun onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int) {
    (holder as ItemHolder).bind(list[position].name,list[position].price,list[position].photo)
}


class ItemHolder(itemView:View):RecyclerView.ViewHolder(itemView)
{
    fun bind(n:String,p:String,u:String)
    {
        itemView.item_name.text =n
        itemView.item_price.text=p
        var web:String=" http://192.168.43.14/delivery/images/"+ u
        web=web.replace("","%20")
        Picasso.with(itemView.context).load(web).into(itemView.item_photo)
    }

}

}

повторный просмотр активности элемента

.activity_item2

    var cat:String=intent.getStringExtra("cat")
    var url="http://192.168.43.14/delivery/get_items.php?category= "+cat
    var list=ArrayList<Item>()

    var rq: RequestQueue = Volley.newRequestQueue(this)
    var jar= JsonArrayRequest(Request.Method.GET,url,null, Response.Listener { response ->

        for (x in 0..response.length() -1)
            list.add(Item(response.getJSONObject(x).getInt("id"),response.getJSONObject(x).getString("name"),
                    response.getJSONObject(x).getString("price"),response.getJSONObject(x).getString("photo")))


        var adp=ItemAdapter(this,list)
        item_rv.layoutManager = LinearLayoutManager(this)
        item_rv.adapter=adp

    }, Response.ErrorListener { error ->
        Toast.makeText(this,error.message, Toast.LENGTH_LONG).show()

    })
    rq.add(jar)

}

}

(Элемент класса

{

var id:Int
var name:String
var price:String
var photo:String

constructor(id:Int,name:String,price:String,photo:String)
{
    this.id=id
    this.name=name
    this.price=price
    this.photo=photo

}

}

пожалуйста, ребята, помогите мне, где я все испортил