当前位置: 首页 > 知识库问答 >
问题:

RecycerView页眉和页脚

步嘉德
2023-03-14

也许以前有人问过这个问题,但我似乎找不到一个准确的答案或解决办法。我开始使用RecycerView,并使用LinearLayoutManager实现了它。现在,我想添加自定义的页眉和页脚项,这些项不同于RecycerView中的其他项。页眉和页脚不应该粘,我希望他们滚动与其余的项目。有人能指出一些例子如何做到这一点或只是分享想法。我会非常感激的。THX

共有1个答案

乐正锦
2023-03-14

在适配器中添加此类:

private class VIEW_TYPES {
        public static final int Header = 1;
        public static final int Normal = 2;
        public static final int Footer = 3;
}

然后重写以下方法,如下所示:

@Override
public int getItemViewType(int position) {

    if(items.get(position).isHeader)
        return VIEW_TYPES.Header;
    else if(items.get(position).isFooter)
        return VIEW_TYPES.Footer;
    else
        return VIEW_TYPES.Normal;

}

现在,在onCreateViewHolder方法中,根据视图类型膨胀布局::

@Override
public ViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) {

    View rowView;

    switch (i) {

        case VIEW_TYPES.Normal:
            rowView = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.normal, viewGroup, false);
            break;
        case VIEW_TYPES.Header:
            rowView = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.header, viewGroup, false);
            break;
        case VIEW_TYPES.Footer:
            rowView = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.footer, viewGroup, false);
            break;
        default:
            rowView = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.normal, viewGroup, false);
            break;
    }
    return new ViewHolder (rowView);
}

现在,在onBindViewHolder方法中,基于视图持有者绑定布局:

@Override
    public void onBindViewHolder(@NonNull RecyclerView.ViewHolder viewHolder, int position) {

        int viewType = getItemViewType(position);

        switch(viewType) {

            case VIEW_TYPES.Header: // handle row header
                break;
            case VIEW_TYPES.Footer: // handle row footer
                break;
            case VIEW_TYPES.Normal: // handle row item
                break;

        }

    }

希望这能有所帮助。

 类似资料:
  • 我花了一点时间试图找到一种方法来向添加一个标头,但没有成功。 这是我目前得到的: 似乎是处理项的对象。由于我找不到任何方法,所以我决定使用的方法,并在第一个位置添加header视图以充当header。 这就是事情变得更丑陋的地方: 在创建活动的不同时刻,尝试调用的几次(也尝试在设置好所有内容后添加视图,甚至适配器的数据)之后,我意识到我不知道这是否是正确的方法(而且看起来并不正确)。 PS:另外,

  • 问题内容: 如何在我的PDF页面中添加 页眉 和 页脚 ?我想要一个表,表头中有3列,其他表中,页脚中有3列。我的页面可能是A3或A4,并且是横向或纵向。 谁能帮我?我在互联网上找不到很好的例子。 谢谢! mas正 问题答案: 创建一个MyPageEventListener类,该类扩展了 PdfPageEventHelper 将页面事件侦听器添加到PdfWriter对象 在MyPageEventL

  • 我在一个应用程序的工作,有一个回收视图,你可以向上和向下滚动,但你希望。 数据项是从服务器加载的,所以如果你要到达底部或顶部,应用程序会在那里显示新的数据。 为了避免奇怪的滚动行为并保持在当前项上,我使用'diffutil.callback',重写'get oldlistsize'、'get newlistsize'、'are itemsthesame'、'are contentsthesame'

  • 问题内容: 我真的不喜欢在每个控制器中编写代码: 是否可以这样做,将自动包含页眉和页脚,如果需要更改它,我们也可以这样做吗?你怎么处理?还是您认为这不是问题?谢谢。 问题答案: 这是我的工作: 对于CI 3.x: 然后,在您的控制器中,这就是您要做的一切:

  • 问题内容: 在我的ListActivity中,我需要页眉和页脚视图(在列表的顶部和底部)分别用作列表上的上一页和下一页按钮,因为我一次只想显示20个项目。 我通过执行以下操作来设置标题和脚位视图: 这可以正常工作,但是我需要动态删除并添加这些页眉和页脚视图,因为列表中的某些页面可能没有下一页按钮或上一页按钮。 问题是,调用setListAdapter之后,我无法调用addHeaderView或ad

  • 我正在用CSS来创建具有固定页眉和页脚以及可滚动内容的可滚动“窗口”。这里被接受的答案是我已经得出的最接近解决这个问题的答案,但这需要设置“内容”类div的高度。 我的目标是:1。如果内容小于机身高度,则不滚动2。如果内容长于正文高度减去页眉和页脚,则滚动。 如何实现这一点?