Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/327.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java android recyclerview没有';不显示项目_Java_Android_Android Recyclerview - Fatal编程技术网

Java android recyclerview没有';不显示项目

Java 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中显示这些项目,但它根本不显示,我看不到错误。也许你们可以帮我

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的数据(没有显示的内容):

类菜单数据{
字符串文本;
菜单数据(字符串文本){
this.text=文本;
}
私人名单;
private void initializeData(){
列表=新的ArrayList();
添加(新菜单数据(“特色”);
添加(新菜单数据(“类别”);
添加(新菜单数据(“出售”);
添加(新菜单数据(“设置”);
添加(新菜单数据(“注销”);
}
}

提前感谢

因为您没有获得任何数据,我猜问题发生在您将列表传递到适配器时。我看到您没有复制列表,所以您将列表的引用直接传递到适配器中。我建议你试试
MenuRecAdapter MenuRecAdapter=newmenurecadapter(newarraylist(list))

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"/>