利用sections創建Android RecyclerViews的一個適配器:SectionedRecyclerView

SectionedRecyclerView是一個能夠利用sections來創建Android RecyclerViews的適配器。提供headers 和 footers.

用法

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

  • His a class extendingRecyclerView.ViewHolderto hold the view for section headers.
  • VHis a class extendingRecyclerView.ViewHolderto hold the view for the regular items in the view.
  • Fis a class extendingRecyclerView.ViewHolderto hold the view for section footers.

According to the sample published in this repository:

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

@Override
protected int getSectionCount() {
    return 5;
}

@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]);
}

3. If you use aGridLayoutManager, you need to set it aSectionedSpanSizeLookupto make sure that headers and footers span the whole width of theRecyclerView:
GridLayoutManager layoutManager = new GridLayoutManager(this, 2);
SectionedSpanSizeLookup lookup = new SectionedSpanSizeLookup(adapter, layoutManager);
layoutManager.setSpanSizeLookup(lookup);
recycler.setLayoutManager(layoutManager);

  • 4. Your result will look like this:

SectionedRecyclerView screenshot

項目主頁:http://www.baiduhome.net/lib/view/home/1437613826490

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!