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
}
}
пожалуйста, ребята, помогите мне, где я все испортил