在recyclerview末尾添加进度条

2024-01-19

在我的应用程序中,我发送了一个齐射请求,该请求逐一获取列表项,而不是一次全部获取。我想在获取数据时在回收器视图的末尾实现一个进度条。 “updateAdapter”类更新适配器,我正在考虑使进度条在 recyclerview 滚动侦听器中可见。但我不知道如何在我的代码中执行此操作。

更新适配器.java

  //THIS CLASS UPDATES THE RECYCLER VIEW

    public class updateAdapter{

    private FetchWpApi fetch;

    private int totalItemCount;
    private int prevLastvisible=0;
    private int fpage=1;
    private Context context;
    private RecyclerView recyclerView;
    private ArrayList<sItem> list= new ArrayList<>();
    private LinearLayoutManager manager;
    private ProgressBar progressBar;

    //CONSTRUCTOR FOR updateAdapter
    public updateAdapter(RecyclerView recyclerView, final Context context, String url, LinearLayoutManager manager){
        this.context=context;
        this.recyclerView=recyclerView;
        fetch=new FetchWpApi(url,context);
        this.manager=manager;
    }

    public void fetchAndPut()
    {
        if(recyclerView.getAdapter()==null) {
            fetch.fetchApiData(fpage, new FetchWpApi.Callback() {
                @Override
                public void onSuccess(sItem sitem) {
                    list.add(sitem);
                    if (list.size() == 1 || recyclerView.getAdapter() == null) {
                        ItemAdapter adapter = new ItemAdapter(context, list);
                        recyclerView.setAdapter(adapter);

                    } else if (list.size() > 1 && recyclerView.getAdapter() != null) {
                        recyclerView.getAdapter().notifyDataSetChanged();
                        recyclerView.getAdapter().notifyItemRangeChanged(0, recyclerView.getAdapter().getItemCount());
                    }
                }
                @Override
                public void onFail(String msg) {
                    Toast.makeText(context, "FAILED PRIMARY LOAD", Toast.LENGTH_LONG).show();
                }
            });
        }

        recyclerView.addOnItemTouchListener(
                        //Not important
        );

        //SCROLL LISTENER ATTACHED TO THE RECYCLER VIEW
        //SHOW PROGRESS BAR HERE?
        recyclerView.addOnScrollListener(new RecyclerView.OnScrollListener()
        {
            @Override
            public void onScrolled(final RecyclerView recyclerView, int dx, int dy)
            {
                if(dy > 0) //check for scroll down
                {
                   totalItemCount = manager.getItemCount();
                    int lastVisibleItemPosition = ((LinearLayoutManager) manager).findLastVisibleItemPosition();
                        if( (lastVisibleItemPosition+1)==totalItemCount && totalItemCount%10==0 && lastVisibleItemPosition>prevLastvisible)

                        {

                            //SET VISIBILITY OF THE PROGRESS BAR IN THE LAST CARD ITEM TO VISIBLE ??

                            fpage++;
                            //loading = false;
                            Log.v("...", "Last Item !");
                            //Do pagination.. i.e. fetch new data
                            prevLastvisible=lastVisibleItemPosition;
                            fetch.fetchApiData(fpage,new FetchWpApi.Callback(){
                                @Override
                                public void onSuccess(sItem sitem){
                                    list.add(sitem);
                                    recyclerView.getAdapter().notifyDataSetChanged();
                                    recyclerView.getAdapter().notifyItemRangeChanged(0, recyclerView.getAdapter().getItemCount());

                                }
                                @Override
                                public void onFail(String msg){
                                    Toast.makeText(context,"FAILED ONLOAD",Toast.LENGTH_LONG).show();
                                }
                            });
                        }

                }
            }
        });

    }

}

我想显示的进度条位于此卡片视图中:

最终卡.xml:

<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.CardView
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:card_view="http://schemas.android.com/apk/res-auto"
android:id="@+id/cvItem"
android:layout_gravity="center"
android:layout_width="match_parent"
android:layout_height="wrap_content"

>

<!--<LinearLayout-->
    <!--android:id="@+id/linearlayout"-->
    <!--android:layout_width="match_parent"-->
    <!--android:layout_height="wrap_content"-->
    <!--android:layout_margin="10dp"-->
    <!--&gt;-->


<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">

    <TextView
        android:id="@+id/tvTitle"
        android:textColor="#000"
        android:text="Sample text Sampletext sample text sample text sample text"
        android:layout_alignParentStart="true"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_toStartOf="@+id/ivMainImage"
        android:layout_marginTop="15dp"
        android:paddingStart="16dp"
        android:paddingEnd="2dp"
        android:maxLines="4"
        android:textSize="20sp"
        android:layout_gravity="start"
        />


    <TextView
        android:id="@+id/dateText"
        android:text="DATE"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:paddingStart="16dp"
        android:paddingEnd="0dp"
        android:layout_gravity="start"
        android:layout_below="@id/tvTitle"
        android:ellipsize="marquee"/>

    <ImageView
        android:id="@+id/ivMainImage"
        android:layout_width="140dp"
        android:layout_height="130dp"
        android:layout_gravity="end"
        android:layout_alignParentEnd="true"
        android:layout_margin="15dp"
        android:src="@android:drawable/btn_star"
        android:scaleType="centerCrop"
        />

    <View
        android:id="@+id/view"
        android:layout_width="match_parent"
        android:layout_height="2dp"
        android:background="#0C000000"
        android:layout_below="@id/ivMainImage"
        />

    <ProgressBar
        style="?android:attr/progressBarStyleSmall"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/progressBar2"
        android:layout_below="@id/view"
        android:visibility="gone"
        />

</RelativeLayout>

修复回收器视图下方的进度条,而不是卡片视图。 设置调用Web服务时可见的进度条,并设置服务调用完成后可见性消失

//Progress bar setVisibility - Visible
progressbar.setVisibility(View.VISIBLE);
fetch.fetchApiData(fpage, new FetchWpApi.Callback() {
  @Override
  public void onSuccess(sItem sitem) {
    progressbar.setVisibility(View.GONE);
    list.add(sitem);
    recyclerView.getAdapter().notifyDataSetChanged();
    recyclerView.getAdapter().notifyItemRangeChanged(0, recyclerView.getAdapter().getItemCount());

  }
  @Override
  public void onFail(String msg) {
    progressbar.setVisibility(View.GONE);
    Toast.makeText(context, "FAILED ONLOAD", Toast.LENGTH_LONG).show();
  }
});
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在recyclerview末尾添加进度条 的相关文章

随机推荐

  • 无法使用 PhantomJS 加载页面资源

    我正在使用 PhantomJS 获取给定 URL 的页面内容 问题是在某些页面上 PhantomJS 无法加载某些资源 js css 我收到的错误是 错误代码 5 操作取消 我可以重现此问题的网页是www lifehacker com ht
  • Django Rest Framework 中 CreateAPIView 的权限

    我查看了 CreateAPIView 的代码 发现创建过程中没有任何地方检查权限 所以我决定检查它们perform create挂钩如下 class CourseList generics CreateAPIView Create a co
  • 浮动元素被前一个元素按下

    http jsfiddle net 4gw8wank http jsfiddle net 4gw8wank 我有 3 个容器作为响应式页面的一部分 在移动视图中 它们必须按顺序显示 蓝色 红色 绿色 像这样堆叠在一起 div class b
  • 如何删除警告:“-pie 被忽略。它仅在链接主可执行文件时使用”

    自从更新到 Xcode10 和 Swift 4 2 以来 我总是在我的 pod 中收到此构建时间警告 我需要做什么才能删除这些警告 我尝试删除派生数据 清理并构建项目 但它不起作用 我发现有人在这里问同样的问题https github co
  • 保持对管道运算符之间的变量的访问

    我一直在尝试在节点应用程序中使用 Rxjs fileList 是从返回fs readdirsync 字符串数组 首先map 有一个称为文件名的参数 flatMap readFileAsObservable uses bindNodeCall
  • Azure 数据工厂:如何在另一个管道成功完成后触发管道

    在 Azure 数据工厂中 如何在其他管道成功完成后触发管道 详细地 我试图在其他管道成功完成后触发 SSIS 包 我已经知道我可以将 SSIS 包保存为管道 并像其他管道一样使用触发器运行它 但是如何确保 SSIS 包管道仅在其他管道完成
  • 从服务器端查找 HttpRequest 中的时区

    我努力了var dateHeaders HttpContext Current Request Headers Date 但它包含 null 显然没有这样的键 谁能告诉我还能在哪里找到当前客户的时区 参考 http en wikipedia
  • 让 CSS 插入框阴影出现在内部背景之上

    我希望 CSS 插入框阴影出现在带有框阴影的容器内元素的顶部 特别是子元素的背景颜色 Demo http jsfiddle net Q8n77 http jsfiddle net Q8n77 div class parent foo div
  • C# 面板列表

    我想创建包含有关某个项目的详细信息的面板 包括左侧的缩略图 然后将它们添加到可滚动列表中 与 iPhone 上的 iTunes 显示可用应用程序列表的方式非常相似 我已经进行了一些搜索 但迄今为止尚未找到任何帮助 有谁有任何想法或样本链接想
  • Bing 拼写检查 API 是否对 mode = 拼写有额外的长度限制?

    The Bing 拼写检查 API https msdn microsoft com en us library mt711411 aspx对于请求想要进行拼写检查 mode spell 或校对 mode proof default 的文本
  • 后备机制 - 最佳方法?

    我有三种不同类型的服务器连接 这些可以在属性文件中配置 假设有三台服务器 Server1 Server2 Server3 In Properties文件 我的配置如下 ServerPref1 Server1 ServerPref2 Serv
  • 如何使用 Spark-Submit 和 pyspark 运行 luigi 任务

    我有一个luigipython 任务 其中包括一些 pyspark 库 现在我想用spark submit在mesos上提交这个任务 我应该做什么来运行它 下面是我的代码框架 from pyspark sql import function
  • UIBarStyleBlack 与 TintColor 黑色

    设置和设置有什么区别tintColor的财产UINavigationBar to UIColor blackColor 和设置barStyle to UIBarStyleBlack在不透明的导航栏上 有一些细微的差别 例如 在 iPad 上
  • C#中如何从字符串中获取数字

    我在 HTML 中有一个字符串 3 Trip 中的 1 3 如何获取数字 3 在 trip 之前 并将其转换为 int 我想将其用作计数 找到了这段代码 public static string GetNumberFromStr strin
  • Fail2ban - 为 docker-container 日志创建第二个 sshd-jail 不起作用

    我有一个运行 Ubuntu 18 04 3 的 Linux 机器 并且有一个有效的 fail2ban 配置 就像在我的所有主机上一样 在本例中 我设置了一个 docker container 它充当多个用户的 sftp 服务器 docker
  • String 或 StringBuilder 返回值?

    如果我在方法中使用 StringBuilder 对象构建字符串 那么以下操作是否有意义 返回StringBuilder对象 并让调用代码调用ToString return sb 或者通过自己调用 ToString 返回字符串 return
  • javascript 全局变量 - 保护

    我在基于 Html Javascript 构建的 Web 应用程序上使用一些全局变量 我跨页面 或其中的一部分 使用这些变量 有时它们被用作 ajax 调用的发布数据 我的问题是 这有多安全 当然 我可以为这些变量设置不同的值 例如使用控制
  • 如何从内存分配发生在C层的Python脚本将float*数组传递给C方法

    我试图从Python脚本调用C方法 C方法调用反过来C 方法 我使用 malloc 在 getResults 方法内分配数组 现在的问题是如何将参数传递给 python 脚本中的 float oresults 其内存分配发生在 C 层内 这
  • 如何使用 Spring Hibernate 配置包级别 @TypeDefs

    我需要配置 TypeDefs 以在包级别使用自定义 Type 当我按照以下方式配置它时 我收到 ClassNotFoundException 但是当我将 TypeDefs 放在类级别时 它工作正常 我发现了类似的堆栈溢出帖子 https s
  • 在recyclerview末尾添加进度条

    在我的应用程序中 我发送了一个齐射请求 该请求逐一获取列表项 而不是一次全部获取 我想在获取数据时在回收器视图的末尾实现一个进度条 updateAdapter 类更新适配器 我正在考虑使进度条在 recyclerview 滚动侦听器中可见