9 Star 3 Fork 1

Archermind-TI / SectionedRecyclerView

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README

SectionedRecyclerView

project Introduction

  • SectionedRecyclerView is an adapter used to create a ListContainer with parts, providing headers and footers.

installation Tutorial

  1. Add the library to your module build.gradle:
allprojects{
    repositories{
        mavenCentral()
    }
}

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar', '*.har'])
    implementation 'com.gitee.archermind-ti:sectionedrecyclerview:1.0.1'
}

In sdk4, DevEco Studio2.1 beta4, the project can be run directly. If it fails to run, delete the project .gradle, .idea, build, gradle, build.gradle files, and create a new project based on your own version, and copy the corresponding files of the new project Go to the root directory; also pay attention to the location of the SDK in the local.properties file.

InstructionsForUse

In order to use this library, you need to extend SectionedRecyclerView<H, VH, F> where:

  • H is a class extending RecyclerView.ViewHolder to hold the view for section headers.
  • VH is a class extending RecyclerView.ViewHolder to hold the view for the regular items in the view.
  • F is a class extending RecyclerView.ViewHolder to hold the view for section footers.

According to the sample published in this repository:

    1. Create a class extending SectionedRecyclerView:
public class CountSectionAdapter extends SectionedRecyclerViewAdapter<CountHeaderViewHolder,
        CountItemViewHolder,
        CountFooterViewHolder>
    1. Implement the corresponding methods:
@Override
protected int getItemCountForSection(int section) {
    return section + 1;
}


@Override
protected boolean hasFooterInSection(int section) {
    return true;
}

protected LayoutInflater getLayoutInflater(){
    return LayoutInflater.from(context);
}

@Override
protected CountHeaderViewHolder onCreateSectionHeaderViewHolder(ViewGroup parent, int viewType) {
    View view = getLayoutInflater().inflate(R.layout.view_count_header, parent, false);
    return new CountHeaderViewHolder(view);
}

@Override
protected CountFooterViewHolder onCreateSectionFooterViewHolder(ViewGroup parent, int viewType) {
    View view = getLayoutInflater().inflate(R.layout.view_count_footer, parent, false);
    return new CountFooterViewHolder(view);
}

@Override
protected CountItemViewHolder onCreateItemViewHolder(ViewGroup parent, int viewType) {
    View view = getLayoutInflater().inflate(R.layout.view_count_item, parent, false);
    return new CountItemViewHolder(view);
}

@Override
protected void onBindSectionHeaderViewHolder(CountHeaderViewHolder holder, int section) {
    holder.render("Section " + (section + 1));
}

@Override
protected void onBindSectionFooterViewHolder(CountFooterViewHolder holder, int section) {
    holder.render("Footer " + (section + 1));
}

protected int[] colors = new int[]{0xfff44336, 0xff2196f3, 0xff009688, 0xff8bc34a, 0xffff9800};
@Override
protected void onBindItemViewHolder(CountItemViewHolder holder, int section, int position) {
    holder.render(String.valueOf(position + 1), colors[section]);
}
    1. Your result will look like this:

SectionedRecyclerView screenshot SimpleSectionedAdapter screenshot

Even simpler

Most times you will need a simpler version of this adapter, where there are no footers and your headers will only be a title. For those cases, you have SimpleSectionedAdapter<VH>, where VH is a class extending ViewHolder to hold the view of the regular items in your RecyclerView.

In this case, you will have to implement the following methods:

@Override
protected String getSectionHeaderTitle(int section) {
    return section == 0 ? "Today" : "Tomorrow";
}

@Override
protected int getItemCountForSection(int section) {
    return 3;
}

@Override
protected AgendaItemViewHolder onCreateItemViewHolder(ViewGroup parent, int viewType) {
    LayoutInflater inflater = LayoutInflater.from(parent.getContext());
    View view = inflater.inflate(R.layout.view_agenda_item, parent, false);
    return new AgendaItemViewHolder(view);
}

protected String[][] agenda = {{"Meeting", "Phone call", "Interview"},
            {"Basket match", "Grocery shopping", "Taking a nap"}};

@Override
protected void onBindItemViewHolder(AgendaItemViewHolder holder, int section, int position) {
    holder.render(agenda[section][position]);
}

Your result will look like this:

SimpleSectionedAdapter screenshot

versionIteration

  • v1.2.0
  • commit id 2f25149b8ae9ce87ddc451dbdf1d603d801b47b8

Copyright Licensing In formation

  • Copyright 2015 Tomás Ruiz-López

    Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

    Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

空文件

简介

SectionedRecyclerView是一个用于创建带有部分的 ListContainer 的适配器,提供headers 和 footers. 展开 收起
取消

发行版

暂无发行版

贡献者

全部

近期动态

加载更多
不能加载更多了
1
https://gitee.com/archermind-ti/sectionedrecyclerview.git
git@gitee.com:archermind-ti/sectionedrecyclerview.git
archermind-ti
sectionedrecyclerview
SectionedRecyclerView
master

搜索帮助