personList = addPersonList(); recyclerView = findViewById(R.id.rv_device); personAdapter = new PersonAdapter(personList,this); recyclerView.setLayoutManager(new LinearLayoutManager(this)); recyclerView.setAdapter(personAdapter);当list中有多个对象时,为什么列表只显示一个item
时间: 2024-01-24 08:17:22 浏览: 60
可能是因为recyclerView没有正确地测量每个item的高度,导致只显示一个item。可以尝试在PersonAdapter中重写getItemViewType方法,确保返回不同类型的view来表示每个item,例如:
```
@Override
public int getItemViewType(int position) {
return position;
}
```
另外,也可以尝试在xml布局文件中给RecyclerView添加固定的高度,例如:
```
<android.support.v7.widget.RecyclerView
android:id="@+id/rv_device"
android:layout_width="match_parent"
android:layout_height="250dp"
android:layout_marginTop="10dp" />
```
如果问题仍然存在,建议检查addPersonList()方法是否正确地添加了多个对象到list中,或者检查PersonAdapter中的getItemCount()方法是否正确地返回了list的大小。
相关问题
personAdapter = new PersonAdapter(R.layout.item_person, personList);
这行代码是在Android中使用RecyclerView控件时创建一个自定义的Adapter对象,用于将数据和视图绑定。其中,R.layout.item_person是指ListView每一项的布局文件,personList是一个存储数据的List对象。PersonAdapter是自定义的一个Adapter类,通过继承RecyclerView.Adapter实现,其中可以重写onCreateViewHolder()、onBindViewHolder()等方法,来实现数据和视图的绑定。
解释代码personList = queryPersonListFromDatabase(); adapter = new PersonAdapter(personList); adapter.setOnItemClickListener(new PersonAdapter.OnItemClickListener() { @Override public void onItemClick(int position) { // 获取被点击的 Person 对象 Person person = personList.get(position); // 跳转到详情界面,并将该 Person 对象传递给下一个 Activity Intent intent = new Intent(DoctorActivity.this, DetailActivity.class); intent.putExtra("person", person); startActivity(intent); } });
这段代码主要是用来实现一个医生界面上的人员列表,并且当用户点击某个人员的时候跳转到该人员的详细信息界面。其中 `queryPersonListFromDatabase()` 方法是从数据库中获取人员列表的方法,它返回一个包含多个 `Person` 对象的列表。`PersonAdapter` 是一个自定义的适配器类,用于将 `Person` 对象列表中的数据显示在界面上。在 `adapter` 对象被创建之后,通过 `setOnItemClickListener` 方法为适配器设置了一个点击事件监听器,当用户点击某个人员时,监听器会获取被点击的 `Person` 对象,并将其作为参数传递给 `DetailActivity`。在 `DetailActivity` 中,可以使用 `getIntent().getParcelableExtra("person")` 方法来获取传递过来的 `Person` 对象,并在界面上显示其详细信息。
阅读全文