0

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

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

4

2 回答 2

0

Android recyclerview 用于在屏幕上显示大量项目,但具有改进的性能和其他好处。Android 中的 RecyclerView 使用一个适配器来表示我们想要显示为列表的信息。要显示的数据被发送到处理视图的适配器。


采用添加按钮的自定义方法。您可以在开始时控制发送到适配器的数据量。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 数据馈送结束的代码。
  • 用于请求更多关于按钮单击和信号适配器进行更新的数据的功能。

您可以使用 RecyclerView 搜索无限滚动以获取与此相关的教程。

于 2020-01-29T17:53:00.163 回答
0

您要问的基本上是一个无休止的滚动回收器视图,底部有一个加载器视图,它接受点击以加载其他数据。

您必须viewTypeRecyclerView.Adapter

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

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

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

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

和一个boolean showLoadMore

创建公共方法

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

这可用于在您的活动中显示/隐藏加载程序

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

@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;

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

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

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

同时,这是一个来自网络的教程,以另一种方式实现无限滚动回收器视图

于 2020-01-29T18:08:35.723 回答