Android RecyclerView中的RecyclerView?

Android RecyclerView中的RecyclerView?,android,android-recyclerview,Android,Android Recyclerview,我正在使用显示不同类别列表的RecyclerView。每行项目还包含RecyclerView以显示类别项目的列表。父RecyclerView用垂直LinearLayoutManager填充,子RecyclerView用GridLayoutManager填充(2列)。ChildRecyclerViews不显示除前2个之外的所有类别项目,即使它有许多类别项目。将隐藏特定类别的所有剩余类别项。换句话说,您可以说childRecyclerView没有扩展它所包含的项目那么多 我在这里找到了不同的解决方案

我正在使用显示不同类别列表的
RecyclerView
。每行项目还包含
RecyclerView
以显示类别项目的列表。父
RecyclerView
用垂直
LinearLayoutManager
填充,子
RecyclerView
GridLayoutManager
填充(2列)。Child
RecyclerViews
不显示除前2个之外的所有类别项目,即使它有许多类别项目。将隐藏特定类别的所有剩余类别项。换句话说,您可以说child
RecyclerView
没有扩展它所包含的项目那么多


我在这里找到了不同的解决方案,但没有人奏效。这就是再次发布的原因。

您只需使用一个RecyclerView即可轻松实现。见下图:

首先创建一个截面类:

class MySection extends StatelessSection {

    String title;
    List<String> list;

    public MySection(String title, List<String> list) {
        // call constructor with layout resources for this Section header, footer and items 
        super(R.layout.section_header, R.layout.section_item);

        this.title = title;
        this.list = list;
    }

    @Override
    public int getContentItemsTotal() {
        return list.size(); // number of items of this section
    }

    @Override
    public RecyclerView.ViewHolder getItemViewHolder(View view) {
        // return a custom instance of ViewHolder for the items of this section
        return new MyItemViewHolder(view);
    }

    @Override
    public void onBindItemViewHolder(RecyclerView.ViewHolder holder, int position) {
        MyItemViewHolder itemHolder = (MyItemViewHolder) holder;

        // bind your view here
        itemHolder.tvItem.setText(list.get(position));
    }

    @Override
    public RecyclerView.ViewHolder getHeaderViewHolder(View view) {
        return new MyHeaderViewHolder(view);
    }

    @Override
    public void onBindHeaderViewHolder(RecyclerView.ViewHolder holder) {
        MyHeaderViewHolder headerHolder = (MyHeaderViewHolder) holder;

        // bind your header view here
        headerHolder.tvItem.setText(title);
    }
}

您只需要使用一个回收器视图。提供更多的图像代码和结果,我将尝试解释更多即使你可以有一个嵌套的RecyclerViews,你将无法滚动它没有一些额外的工作。你可以有嵌套的RecyclerViews(当我听到这个消息时我震惊了)…但这个问题无法解决没有共享代码。如果我理解正确,您希望顶层视图只支持垂直滚动,而子视图也只支持垂直滚动,对吗?在这里,一个模型或一些示例代码将非常有用。检查这个我使用了这个库,它工作得很好,但有点不稳定。现在我想在这个recyclerview列表中添加加载更多(希望从服务器加载更多记录)功能。如何使其平滑并实现分页?1)在MySection类中创建“addItem”方法,将新项目添加到列表中;2) 使用“addItem”方法将项目添加到您的分区中;3) 调用sectionAdapter的notifyDataSetChanged;这不是我要的。我想知道我该如何知道我的列表已经到达了滚动条的底部,以便我可以调用api从服务器获取下一页记录?我知道如何在列表中添加新项目。你也可以帮助我使它顺利,因为它的小杰克。对于“干”问题,你应该打开另一个问题,粘贴你的代码和你的XML布局,否则没有人不能帮助,因为负载更多你可以检查这一点:高兴听到它的工作,请考虑标记我的答案是正确的,然后,点击我答案右上方的勾号。干杯
// Create an instance of SectionedRecyclerViewAdapter 
SectionedRecyclerViewAdapter sectionAdapter = new SectionedRecyclerViewAdapter();

// Create your sections with the list of data for each year
MySection section1 = new MySection("Categories 1", categories1DataList);
MySection section2 = new MySection("Categories 2", categories2DataList);

// Add your Sections to the adapter
sectionAdapter.addSection(section1);
sectionAdapter.addSection(section2);

// Set up your RecyclerView with the SectionedRecyclerViewAdapter
GridLayoutManager glm = new GridLayoutManager(getContext(), 2);
glm.setSpanSizeLookup(new GridLayoutManager.SpanSizeLookup() {
    @Override
    public int getSpanSize(int position) {
        switch(sectionAdapter.getSectionItemViewType(position)) {
            case SectionedRecyclerViewAdapter.VIEW_TYPE_HEADER:
                return 2;
            default:
                return 1;
        }
    }
});
recyclerView.setLayoutManager(glm);
recyclerView.setAdapter(sectionAdapter);