Java 如何使用RecyclerView显示阵列? 类MyAdapter扩展了RecyclerView.Adapter{ 私有最终整数列表大小; 私有字符串[]列表; 公共MyAdapter(int listSize,String[]list){ this.listSize=listSize; this.list=列表; } @非空 @凌驾 public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent,int viewType){ Context=parent.getContext(); LayoutFlater充气机=LayoutFlater.from(上下文); 视图=充气机。充气(右布局。rv_项目,父项,错误); ViewHolder ViewHolder=新的ViewHolder(视图); 返回视图持有者; } @凌驾 public void onBindViewHolder(@NonNull ViewHolder,int位置){ 固定器。绑定(位置); } @凌驾 public int getItemCount(){ 返回列表大小; } 类ViewHolder扩展了RecyclerView.ViewHolder{ 文本视图项; 按钮; 公共视图持有者(@NonNull View itemView){ 超级(项目视图); item=itemView.findViewById(R.id.item\u视图); button=itemView.findViewById(R.id.button\u item\u view); } 无效绑定(int索引){ button.setText(String.valueOf(index)); item.setText(列表[索引]); } } }

Java 如何使用RecyclerView显示阵列? 类MyAdapter扩展了RecyclerView.Adapter{ 私有最终整数列表大小; 私有字符串[]列表; 公共MyAdapter(int listSize,String[]list){ this.listSize=listSize; this.list=列表; } @非空 @凌驾 public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent,int viewType){ Context=parent.getContext(); LayoutFlater充气机=LayoutFlater.from(上下文); 视图=充气机。充气(右布局。rv_项目,父项,错误); ViewHolder ViewHolder=新的ViewHolder(视图); 返回视图持有者; } @凌驾 public void onBindViewHolder(@NonNull ViewHolder,int位置){ 固定器。绑定(位置); } @凌驾 public int getItemCount(){ 返回列表大小; } 类ViewHolder扩展了RecyclerView.ViewHolder{ 文本视图项; 按钮; 公共视图持有者(@NonNull View itemView){ 超级(项目视图); item=itemView.findViewById(R.id.item\u视图); button=itemView.findViewById(R.id.button\u item\u view); } 无效绑定(int索引){ button.setText(String.valueOf(index)); item.setText(列表[索引]); } } },java,android,android-recyclerview,Java,Android,Android Recyclerview,在这个适配器类中,我想显示一个字符串数组。唯一的问题是屏幕上缺少第一个元素(索引为零),尽管该元素存在于屏幕之外(对于如此大的画面,很抱歉) 按钮必须以零编号,因此应以零元素开始打印数组。我如何解决这个问题 UPD:布局如下: rv_项目 class MyAdapter extends RecyclerView.Adapter<MyAdapter.ViewHolder> { private final int listSize; private String[]

在这个适配器类中,我想显示一个字符串数组。唯一的问题是屏幕上缺少第一个元素(索引为零),尽管该元素存在于屏幕之外(对于如此大的画面,很抱歉)

按钮必须以零编号,因此应以零元素开始打印数组。我如何解决这个问题

UPD:布局如下:

rv_项目

class MyAdapter extends RecyclerView.Adapter<MyAdapter.ViewHolder> {

    private final int listSize;
    private String[] list;

    public MyAdapter(int listSize, String[] list) {
        this.listSize = listSize;
        this.list = list;
    }

    @NonNull
    @Override
    public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        Context context = parent.getContext();
        LayoutInflater inflater = LayoutInflater.from(context);
        View view = inflater.inflate(R.layout.rv_item,parent,false);
        ViewHolder viewHolder = new ViewHolder(view);
        return viewHolder;
    }

    @Override
    public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
        holder.bind(position);
    }

    @Override
    public int getItemCount() {
        return listSize;
    }

    class ViewHolder extends RecyclerView.ViewHolder {

        TextView item;
        Button button;

        public ViewHolder(@NonNull View itemView) {
            super(itemView);
            item = itemView.findViewById(R.id.item_view);
            button = itemView.findViewById(R.id.button_item_view);
        }
        void bind(int index) {
            button.setText(String.valueOf(index));
            item.setText(list[index]);
        }
    }
}

活动\u top,其中使用了recyclerView小部件

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content">

    <TextView
        android:id="@+id/item_view"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_vertical|start"
        android:text="TextView"
        android:textSize="40sp" />

    <Button
        android:id="@+id/button_item_view"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_vertical|end"
        android:layout_marginEnd="48dp"
        android:padding="10dp"
        android:text="INFO" />
</FrameLayout>

我知道可能是相同的,但我想证实,尝试更改此代码:

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".TopLevelActivity">

    <androidx.recyclerview.widget.RecyclerView
        android:id="@+id/listOfGoods"
        android:layout_width="409dp"
        android:layout_height="729dp"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        tools:listitem="@layout/rv_item" />
</androidx.constraintlayout.widget.ConstraintLayout>
为此:

@Override
public int getItemCount() {
    return listSize;
}

还有一件事:试着调试这个对象
this.list=list
并检查数组是否包含零索引元素。如果数组包含该元素,可能它应该与@Rui Alves提到的布局有关。

我知道它可能是相同的,但我想证实一下,请尝试更改此代码:

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".TopLevelActivity">

    <androidx.recyclerview.widget.RecyclerView
        android:id="@+id/listOfGoods"
        android:layout_width="409dp"
        android:layout_height="729dp"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        tools:listitem="@layout/rv_item" />
</androidx.constraintlayout.widget.ConstraintLayout>
为此:

@Override
public int getItemCount() {
    return listSize;
}

还有一件事:试着调试这个对象
this.list=list
并检查数组是否包含零索引元素。如果数组包含该元素,可能它应该与@Rui Alves提到的布局有关。

不要给出recyclerView的固定高度

正确的方法:

@Override
public int getItemCount() {
    return list.length;
}

附言:我以你为例,在api 29上运行应用程序,祝你工作愉快!
也不要使其成为
listSize
final
,编译器将给出错误,因为您没有初始化不要给出固定的recyclerView高度

正确的方法:

@Override
public int getItemCount() {
    return list.length;
}

附言:我以你为例,在api 29上运行应用程序,祝你工作愉快!
也不要将其设置为
listSize
final
,编译器将在您未初始化时给出错误

这似乎是布局问题,请检查您的布局,如果找不到问题,请发布布局。这似乎是布局问题,请检查您的布局,如果您找不到问题,请发布布局以及Recyclerview的高度导致问题,因为Oz Recyclerview垂直居中对齐。Recyclerview的高度导致问题,因为Oz Recyclerview垂直居中对齐。非常感谢!多谢各位!