【问题标题】:Sectioned RecyclerView with different layouts具有不同布局的分段 RecyclerView
【发布时间】:2016-07-21 20:17:49
【问题描述】:

我有一个场景,我需要创建一个包含 3 个部分的 RecyclerView
第一个名为“First”的部分应显示 3 行,每行包含 TextView 和 EditText
名为“Second”的第二部分应包含 2 行,每行显示一个 TextView

名为“Third”的第三部分应包含 4 行,每行显示一个带有图像的 TextView
。有没有办法可以使用 RecyclerView 实现这一目标?
谁能分享我的链接或示例代码片段来实现此功能

提前致谢

【问题讨论】:

    标签: android android-recyclerview


    【解决方案1】:

    您可以使用库SectionedRecyclerViewAdapter 将您的数据分组。

    首先创建一个Section类:

    class MyFirstSection extends StatelessSection {
    
        String title;
        List<String> list;
    
        public MyFirstSection(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 SimpleHeaderViewHolder(view);
        }
    
        @Override
        public void onBindHeaderViewHolder(RecyclerView.ViewHolder holder) {
            MyHeaderViewHolder headerHolder = (MyHeaderViewHolder) holder;
    
            // bind your header view here
            headerHolder.tvItem.setText(title);
        }
    }
    

    然后你用你的部分设置 RecyclerView:

    // Create an instance of SectionedRecyclerViewAdapter 
    SectionedRecyclerViewAdapter sectionAdapter = new SectionedRecyclerViewAdapter();
    
    // Create your sections with the list of data for each year
    MyFirstSection section1 = new MyFirstSection("First", firstDataList);
    MySecondSection section2 = new MySecondSection("Second", secondDataList);
    MyThirdSection section3 = new MyThirdSection("Third", thirdDataList);
    
    // Add your Sections to the adapter
    sectionAdapter.addSection(section1);
    sectionAdapter.addSection(section2);
    sectionAdapter.addSection(section3);
    
    // Set up your RecyclerView with the SectionedRecyclerViewAdapter
    RecyclerView recyclerView = (RecyclerView) findViewById(R.id.recyclerview);
    recyclerView.setLayoutManager(new LinearLayoutManager(getContext()));
    recyclerView.setAdapter(sectionAdapter);
    

    【讨论】:

    • 将检查图书馆
    • 这个库很好并且易于使用,尽管我在使用水平滚动回收视图时遇到问题,而且每次刷新时项目都会重复,请帮助我解决这个问题。
    猜你喜欢
    • 2018-12-12
    • 1970-01-01
    • 1970-01-01
    • 2013-04-27
    • 2015-10-05
    • 2013-08-27
    • 1970-01-01
    • 2012-07-23
    • 2011-04-08
    相关资源
    最近更新 更多