为 Andorid 创建具有两个 RecyclerView 的视图

问题描述 投票:0回答:2

然后我有以下代码:

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?

android android-studio android-recyclerview
2个回答
0
投票

您想在这里显示什么?看来这里的逻辑已经被打破了。

为了让您理解,您需要回答以下问题: 列表之间如何相互关联?这两个列表是独立的,还是一个嵌套在另一个列表中?

如果这些列表彼此不相关,那么您需要两个 RecyclerView,适配器可能能够重用或创建您自己的第二个 RecyclerView。

如果一个列表嵌套在另一个列表中,您还需要第二个 RecyclerView,嵌套列表必须以与任何其他视图相同的方式处理。

唯一的区别是布局中的根元素对它们来说会有所不同,尽管嵌套列表的情况稍微复杂一些。


0
投票

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));
© www.soinside.com 2019 - 2024. All rights reserved.