Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/231.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
Android 在RecyclerView中仅显示一项_Android_Android Recyclerview - Fatal编程技术网

Android 在RecyclerView中仅显示一项

Android 在RecyclerView中仅显示一项,android,android-recyclerview,Android,Android Recyclerview,我正在调试,并从服务器获得了正确数量的项目。它还根据项目大小调用onCreateViewholder和onBindViewHolder 但是,我的RecyclerView仅显示列表中的一项 我搜索后的大部分问题是当RecyclerView的高度为match\u parent时。我的父母也是。因此,我将其更改为包装内容。但是它得到了正确的项目数量和正确的项目数据。但不能始终在“回收器”视图中显示 public class MyAdapter extends RecyclerView.Adapter

我正在调试,并从服务器获得了正确数量的项目。它还根据项目大小调用onCreateViewholder和onBindViewHolder

但是,我的RecyclerView仅显示列表中的一项

我搜索后的大部分问题是当RecyclerView的高度为
match\u parent
时。我的父母也是。因此,我将其更改为
包装内容
。但是它得到了正确的项目数量和正确的项目数据。但不能始终在“回收器”视图中显示

public class MyAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
    ArrayList<MyData> MyDataArrayList;

    public static class MyViewHolder extends RecyclerView.ViewHolder {
        TextView userId;

        MyViewHolder(View view) {
            super(view);
            Log.d(TAG, "created()");
            tvUserID = view.findViewById(R.id.textview_myitem);
        }
    }

    public MyAdapter (ArrayList<MyData> myDataArrayList) {
        Log.d(TAG, "new MyAdapter instance created");
        this.myDataArrayList = myDataArrayList;
    }

    @Override
    public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        Log.d(TAG, "onCreateViewHolder()");
        View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.my_item, parent, false);

        return new MyViewHolder(v);
    }

    @Override
    public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
        Log.d(TAG, "onBindViewHolder()=\nposition: " + position + ",\nitem: " + myDataArrayList.get(position).toString());

        MyViewHolder myViewHolder = (MyViewHolder) holder;

        Log.d(TAG, "getItemCount(): " + getItemCount());
        try {
            String username = myDataArrayList.get(position).getUser();
            myViewHolder.userId.setText(username);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    @Override
    public int getItemCount() {
        return myDataArrayList.size();
    }
}


问题是什么?

My\u item.xml有匹配父项的宽度和高度,请更改高度以包装内容。

My\u item.xml有匹配父项的宽度和高度,请更改高度以包装内容。

问题出在您的
My\u item.xml
文件中。
您必须设置
android:layout\u height=“wrap\u content”
而不是
android:layout\u height=“match\u parent”
,它将工作并显示所有项目。

在现有代码中,它也在添加所有项目,但由于
match\u parent
您只能看到一个项目。如果您滚动
RecyclerView
,则也可以看到其他项目


此外,您可以根据需要将
RecyclerView
高度设置为
match\u parent

问题出在您的
my\u item.xml
文件中。
您必须设置
android:layout\u height=“wrap\u content”
而不是
android:layout\u height=“match\u parent”
,它将工作并显示所有项目。

在现有代码中,它也在添加所有项目,但由于
match\u parent
您只能看到一个项目。如果您滚动
RecyclerView
,则也可以看到其他项目


此外,您还可以根据需要将
RecyclerView
高度保持为
匹配\u parent

您是否尝试将高度更改为固定大小(以dp为单位)?@AntonMakov是,但不起作用。RecyclerView.setLayoutManager(layoutManager);请在设置适配器之前使用此选项。我假设您在将更多项目添加到
myAdapter
中后忘记调用
notifyDataChanged()
。也发布
my_item.xml
布局代码。您是否尝试将高度更改为固定大小(dp)?@AntonMakov是的,但不起作用。recyclerView.setLayoutManager(layoutManager);请在setAdapter之前使用此选项我假设您忘记调用
notifyDataChanged()
在将更多项目添加到您的
myAdapter
后。发布您的
my_item.xml
布局代码。并将recyclerview高度更改为匹配父级。我太傻了…谢谢。我认为就我所知,对于recyclerview,高度必须是
wrap_content
。如果根布局是线性布局,请使用否则,请使用固定大小的match parent以确保显示至少2到3行。并将recyclerview高度更改为match parent。我太愚蠢了…谢谢。据我所知,我认为对于recyclerview,高度必须是
wrap\u content
。如果根布局是线性布局,请使用weight otherwi属性se使用固定大小的“匹配父项”确保至少显示2到3行。
recyclerView = findViewById(R.id.my_recycler_view);
layoutManager = new LinearLayoutManager(MyActivity.this);
myAdapter = new myAdapter(myDataArrayList);
recyclerView.setAdapter(myAdapter);
recyclerView.setLayoutManager(layoutManager);
    <android.support.v7.widget.RecyclerView
        android:id="@+id/my_recycler_view"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="horizontal">

    <TextView
        android:id="@+id/textview_myitem"
        android:layout_width="match_parent"
        android:layout_height="50dp"
        android:textSize="25dp"
        android:text="username"
        android:gravity="center_vertical"
        android:paddingLeft="15dp" />
</LinearLayout>