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(列表[索引]); } } }
在这个适配器类中,我想显示一个字符串数组。唯一的问题是屏幕上缺少第一个元素(索引为零),尽管该元素存在于屏幕之外(对于如此大的画面,很抱歉) 按钮必须以零编号,因此应以零元素开始打印数组。我如何解决这个问题 UPD:布局如下: rv_项目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[]
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垂直居中对齐。非常感谢!多谢各位!