Java android recyclerview没有';不显示项目
我想在我的recyclerview中显示这些项目,但它根本不显示,我看不到错误。也许你们可以帮我 MainActivity.javaJava android recyclerview没有';不显示项目,java,android,android-recyclerview,Java,Android,Android Recyclerview,我想在我的recyclerview中显示这些项目,但它根本不显示,我看不到错误。也许你们可以帮我 MainActivity.java RecyclerView recyclerView = (RecyclerView)findViewById(R.id.rec); List<MenuData> list = new ArrayList<>(); recyclerView.setHasFixedSize(true); LinearLa
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的数据(没有显示的内容):
类菜单数据{
字符串文本;
菜单数据(字符串文本){
this.text=文本;
}
私人名单;
private void initializeData(){
列表=新的ArrayList();
添加(新菜单数据(“特色”);
添加(新菜单数据(“类别”);
添加(新菜单数据(“出售”);
添加(新菜单数据(“设置”);
添加(新菜单数据(“注销”);
}
}
提前感谢因为您没有获得任何数据,我猜问题发生在您将列表传递到适配器时。我看到您没有复制列表,所以您将列表的引用直接传递到适配器中。我建议你试试
MenuRecAdapter MenuRecAdapter=newmenurecadapter(newarraylist(list))在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);
也可以去掉MenuData类。上面的代码应该可以正常工作 正如上面在评论中提到的,问题可能在于未指定RecyclerView
的layoutManager
属性
layoutManager
可以在XML文件中指定,也可以在Java代码中动态指定
上面答案中的Java代码示例:
LinearLayoutManager linearLayoutManager = new LinearLayoutManager(this);
linearLayoutManager.setOrientation(LinearLayoutManager.VERTICAL);
recyclerView.setLayoutManager(linearLayoutManager);
要通过XML添加layoutManager,请使用适当的属性:
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/recyclerView"
app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"/>
这个问题对我来说已经解决了。您是否创建了MenuData对象,并调用initializeData()创建列表,然后将其传递给适配器?我真的不知道您的意思。当您编写MenuRecAdapter MenuRecAdapter=new MenuRecAdapter(列表)
是否已经创建了列表
?例如list list list=new ArrayList()代码>?是的,但是现在列表是空的。紧跟在List List=new ArrayList()之后代码>添加一些数据。比如list.add(“某物”)
和runStill未获取任何项目我没有看到您在代码中创建了任何MenuData实例。当然,您的列表是空的。是的,LinearLayoutManager在这里很重要。这是一个写得很差的答案,根本无法解释修复是什么,只是一堆代码。这个答案是如何获得53票的?问题只是列表是空的?
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);
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);
}
}
public class RecViewHolder extends RecyclerView.ViewHolder {
public TextView menuTeXT;
public RecViewHolder(View itemView){
super(itemView);
menuTeXT = (TextView)itemView.findViewById(R.id.menuTXT);
}
}
LinearLayoutManager linearLayoutManager = new LinearLayoutManager(this);
linearLayoutManager.setOrientation(LinearLayoutManager.VERTICAL);
recyclerView.setLayoutManager(linearLayoutManager);
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/recyclerView"
app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"/>