然后我有以下代码:
public class UserStatusAdapter extends RecyclerView.Adapter<UserStatusAdapter.UserResultsViewHolder> {
Context mCtx;
List<String> winnerPlayers;
List<String> loserPlayers;
public UserStatusAdapter(Context mCtx, List<String> winners, List<String> losers) {
this.mCtx = mCtx;
this.winnerPlayers = winners;
this.loserPlayers = losers;
}
@Override
public UserResultsViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = LayoutInflater.from(mCtx).inflate(R.layout.userstatus_list_layout, parent,false);
UserStatusAdapter.UserResultsViewHolder userResultsViewHolder = new UserStatusAdapter.UserResultsViewHolder(view);
return userResultsViewHolder;
}
@Override
public void onBindViewHolder(UserStatusAdapter.UserResultsViewHolder holder, int position) {
final String winners = winnerPlayers.get(position);
// ?? How do I account for the losers list ??
}
@Override
public int getItemCount() {
return winnerPlayers.size() + loserPlayers.size();
}
static class UserResultsViewHolder extends RecyclerView.ViewHolder {
public UserResultsViewHolder(@NonNull View itemView) {
super(itemView);
}
}
}
如何解释 onbindviewholder 中的两个 recyclerview?
您想在这里显示什么?看来这里的逻辑已经被打破了。
为了让您理解,您需要回答以下问题: 列表之间如何相互关联?这两个列表是独立的,还是一个嵌套在另一个列表中?
如果这些列表彼此不相关,那么您需要两个 RecyclerView,适配器可能能够重用或创建您自己的第二个 RecyclerView。
如果一个列表嵌套在另一个列表中,您还需要第二个 RecyclerView,嵌套列表的处理方式必须与任何其他视图相同。
唯一的区别是布局中的根元素对它们来说会有所不同,尽管嵌套列表的情况稍微复杂一些。
XML:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/recyclerView1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentTop="true" />
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/recyclerView2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@id/recyclerView1" />
<!-- Other views can be added here if needed -->
</RelativeLayout>
JAVA:
RecyclerView recyclerView1 = findViewById(R.id.recyclerView1);
RecyclerView recyclerView2 = findViewById(R.id.recyclerView2);
RecyclerView.Adapter<YourDataModel1> adapter1 = new YourAdapter1(yourDataList1);
recyclerView1.setAdapter(adapter1);
recyclerView1.setLayoutManager(new LinearLayoutManager(this));
RecyclerView.Adapter<YourDataModel2> adapter2 = new YourAdapter2(yourDataList2);
recyclerView2.setAdapter(adapter2);
recyclerView2.setLayoutManager(new LinearLayoutManager(this));