有没有办法在 RecyclerView 下添加按钮或任何东西

Is there a way to add a button or anything under a RecyclerView

RecyclerView 最初必须加载 n 个项目,当用户滚动到它的底部时,我想要一个按钮或底部的任何其他视图,以便用户可以单击它和添加 n 的方法触发了更多项目。

我是 android 应用程序开发的新手,我真的需要帮助,谢谢。

Android recyclerview is used to display large amount of items on screen, but with improved performance and other benefits. RecyclerView in Android uses an adapter to represent the information we want to show as list. The data to be displayed is sent to adapter, which handles the view.


使用您添加按钮的自定义方法。您可以控制开始时发送到适配器的数据量。 Considering you have a server that will send data when requested with a tweak to send data in set of row. 添加一个浮动按钮,当用户到达 recyclerview 的末尾时显示,此按钮从服务器请求更多数据并发送 signal to adapter 包含数据的变量已更新。因此,这会将数据添加到您的视图中,您可以进一步滚动直到该数据结束。

  • 因此您需要为自定义数据范围请求设计服务器。
  • 跟踪当前数据范围的变量。
  • 用于检查 RecyclerView 数据馈送结束的代码。
  • 用于在按钮点击时请求更多数据并向适配器发出更新信号的函数。

You can search endless scrolling using RecyclerView to get tutorial related to this.

你问的基本上是一个无限滚动的回收视图,底部有一个加载视图,可以点击加载额外的数据。

您必须在 RecyclerView.Adapter

中使用多个 viewType

我鼓励您在提出新问题之前进行更多搜索,因为在 Whosebug 上有无数关于此问题和类似问题的教程。这是关于如何实现多个视图类型的 link 到 an example 堆栈。

我将分享一些关于实现您正在寻找的方法之一的要点。

首先在你的适配器中你需要声明两个常量

private final int VIEW_ITEM = 0;  
private final int VIEW_LOADER = 1;

和一个boolean showLoadMore

创建一个public方法

public void showLoader(boolean status) {
    this.showLoadMore = status;
}

这可以用于 show/hide 来自您的 activity

的加载程序

您需要覆盖 getItemCount() 方法以 return 正确的行数,因为它会根据您的加载程序不断变化

@Override
public int getItemCount() {
    if (yourList.isEmpty()) {
        return 0;
    } else {
        if (showLoadMore)
            return yourList.size() + 1;
        else
            return yourList.size();
    }
}

覆盖 getItemViewType(int position),因为您的加载器需要位于底部,所以它应该

return (position == yourList.size() && showLoadMore) ? VIEW_LOAD : VIEW_ITEM;

接下来如我上面分享的 link 所示,您需要在 onCreateViewHolder 方法中扩充您的布局,然后根据您的 viewTypes 在 onBindViewHolder 方法中绑定您的布局。您可以简单地使用 if else 条件,因为这种情况下只有 2 个视图类型。

现在在你的 activity 中,在你在 recyclerview 上设置适配器并获取 n 个数据集 adapter.showLoader(true) 以显示加载器视图和 notifyDataSetChanged()。您可以自定义 loaderview 以显示进度条或您喜欢的任何方式,单击获取下一组数据,如果新计数小于所需计数 count <= n,则设置适配器的 showLoader(false)adapter.notifyDataSetChanged() 这将在添加数据后隐藏您的加载器视图。

希望这个回答对您有所帮助,

与此同时,a tutorial 来自 Web 以另一种方式实现无限滚动的回收视图