【问题标题】:How to implement subheaders/sections inside a RecyclerView?如何在 RecyclerView 中实现子标题/部分?
【发布时间】:2017-10-03 22:28:27
【问题描述】:

我正在尝试在我的RecyclerView 中实现subheaders。作为我的RecyclerView 的适配器,我使用的是全新Paging Library 中的PagedListAdapterRoom 的组合。

来自数据库的数据包含日期。我想按天分隔/分组项目并在子标题中显示日期。

用这种组合实现subheaders 的最佳方式是什么? AFAIK不可能以“标准” ViewType 方式实现此功能,因为这会将第一个数据列表项替换为标题。目前我正在尝试使用RecyclerView.ItemDecoration 完成它,但我无法使其工作。

谁能指出我正确的方向?

到目前为止我的RecyclerView.ItemDecoration

public class RecyclerViewHeaderItemDecoration extends RecyclerView.ItemDecoration {

private RecyclerViewHeaderReceiver receiver;

public RecyclerViewHeaderItemDecoration setReceiver(RecyclerViewHeaderReceiver receiver) {
    this.receiver = receiver;
    return this;

}

@Override
public void onDrawOver(Canvas c, RecyclerView parent, RecyclerView.State state) {

    final int childCount = parent.getChildCount();
    for (int i = 0; i < childCount; i++) {
        if (receiver != null) {
            View view = parent.getChildAt(i);
            int position = parent.getChildAdapterPosition(view);
            int previousPosition = position - 1;
            if (position == 0 || (position != RecyclerView.NO_POSITION && receiver.isNewSection(previousPosition, position))) {
                ViewHolder headerView = receiver.getSectionHeaderViewHolder(position);
                parent.getAdapter().bindViewHolder(headerView, position); // I was not able to 'insert' a new viewHolder
            }
        }
    }
}

public interface RecyclerViewHeaderReceiver {
    boolean isNewSection(int prevPosition, int position);
    ViewHolder getSectionHeaderViewHolder(int position);
}
 }

【问题讨论】:

    标签: android android-room


    【解决方案1】:

    所以我最近解决了和你一样的问题,我设法用这个库完成了它

    https://github.com/edubarr/header-decor

    它使用您一直在尝试的 ItemDecoration 方法。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-02
      • 1970-01-01
      • 1970-01-01
      • 2018-07-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多