android - RecyclerView 中只显示一项
问题描述
我正在调试,我从服务器获得正确数量的项目。它还调用了与项目大小一样多的 onCreateViewholder 和 onBindViewHolder。
但是,我的 RecyclerView 只显示列表中的一项。
我搜索后的大部分问题是 RecyclerView 的高度是match_parent
. 我match_parent
的也是。所以,我把它改成了wrap_content
. 但它得到了正确的项目数量和正确的项目数据。但无法在 Recycler 视图中显示所有时间。
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();
}
}
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" />
这是my_item.xml
:
<?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>
这是什么问题?
解决方案
My_item.xml 具有 matchparent 的宽度和高度,更改高度以包装内容。
推荐阅读
- intellij-plugin - 从 IntelliJ 插件自动启用自定义检查
- php - 将数组传递给函数 PHP
- php - PHP数组将点表示的键解析为多维数组
- javascript - 诗浓在测试时不会对我的实习生进行检查。(ExpressJS)
- python - 将类别特定的列和值添加到数据框
- javascript - 如何在jQuery中删除特定表格行下方的所有表格行
- jquery - 为什么我的 JQuery AjaxQ 无法访问我的 Laravel 应用程序中的路由链接
- hyperledger-fabric - Hyperledger Fabric 交叉通信
- jquery - 将大数据作为查询字符串发送,出现错误“HTTP 错误 414。请求 URL 太长”
- angular - Angular 6 - “服务工作者被禁用或不受支持”错误