//自定义分页加载

package com.example.pagedemo;

import java.util.ArrayList;

import android.app.Activity;
import android.app.ProgressDialog;
import android.os.Bundle;
import android.os.Handler;
import android.view.View;
import android.widget.AbsListView;
import android.widget.AbsListView.OnScrollListener;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.ProgressBar;

public class MainActivity extends Activity {

protected static final String TAG = "MainActivity";
    private ListView listView;
    private ArrayList<String> strList;
    private ArrayAdapter<String> arrayAdapter;
    private ProgressDialog dialog;
    Handler handler = new Handler() {
        public void handleMessage(android.os.Message msg) {
            // 让进度条消失
            pb.setVisibility(View.GONE);
            dialog.dismiss();
            if (arrayAdapter == null) {
                arrayAdapter = new ArrayAdapter<String>(MainActivity.this,
                        android.R.layout.simple_list_item_1,
                        android.R.id.text1, strList);
                listView.setAdapter(arrayAdapter);
            } else {
                arrayAdapter.notifyDataSetChanged();
            }
        };
    };

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        listView = (ListView) findViewById(R.id.listView);
        pb = (ProgressBar) findViewById(R.id.pb);
        // 创建集合,添加数据
        strList = new ArrayList<String>();
        loadData();
        listView.setOnScrollListener(new OnScrollListener() {

@Override
            public void onScrollStateChanged(AbsListView view, int scrollState) {
                switch (scrollState) {
                // 停止的状态
                case OnScrollListener.SCROLL_STATE_IDLE:
                    // Log.i(TAG, "idle........");
                    // 获取最后一个条目的索引值
                    int lastVisiblePosition = view.getLastVisiblePosition();
                    // 等于集合长度减一
                    if (lastVisiblePosition == strList.size() - 1) {
                        // 加载数组
                        // 改变index的值
                        index = index + Max;
                        // 显示
                        pb.setVisibility(View.VISIBLE);
                        loadData();
                    }

break;
                // 惯性滑动
                case OnScrollListener.SCROLL_STATE_FLING:
                    // Log.i(TAG, "fling........");
                    break;
                // 滑动的状态
                case OnScrollListener.SCROLL_STATE_TOUCH_SCROLL:
                    // Log.i(TAG, "scroll.......");
                    break;
                default:
                    break;
                }
            }

@Override
            public void onScroll(AbsListView view, int firstVisibleItem,
                    int visibleItemCount, int totalItemCount) {
                // Log.i(TAG, "firstVisibleItem" + firstVisibleItem
                // + "visibleItemCount" + visibleItemCount
                // + "totalItemCount" + totalItemCount);
            }
        });
    }

int Max = 30;
    int index = 0;
    private ProgressBar pb;
    int progress = 0;

private void loadData() {
        dialog = new ProgressDialog(MainActivity.this);
        dialog.setTitle("正在加载数据...");
        dialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
        dialog.show();
        new Thread() {
            public void run() {
                for (int i = index; i < index + Max; i++) {
                    strList.add("我是第" + i + "个条目");
                }
                while (progress < 100) {
                    progress++;
                    dialog.setProgress(progress);
                    try {
                        sleep(10);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                }
                if (progress == 100) {
                    handler.sendEmptyMessage(0);
                    progress=0;
                }
            };
        }.start();
    }
}

ZMY_自定义分页加载相关推荐

  1. 关于layerui laypage自定义分页加载table问题

    1:定义页码和每页展示条数 let pageNum = 1; let pageSize = 10; 2:定义layerui工具 layui.use(['table','laypage'], funct ...

  2. 基于Android官方AsyncListUtil优化经典ListView分页加载机制(二)

    基于Android官方AsyncListUtil优化经典ListView分页加载机制(二) 我写的附录文章1,介绍了如何使用Android官方的分页加载框架AsyncListUtil优化改进常见的Re ...

  3. 微信小程序 实现分页加载数据

    实现分页加载数据要用到页面加载触底事件 onReachBottom: function () { } 首先在 js 定义初始数据 data: { //用来接收后端数据list:[], //当前页cur ...

  4. 微信小程序云数据库触底分页加载,下拉无限加载,第一次请求数据随机,随机获取数据库的数据

    效果图 小程序云开发分页加载代码 <!--pages/chatList/chatList.wxml--> <view class="pageTitle">家 ...

  5. 【Android 插件化】基于插件化的恶意软件的加载策略分析 ( 自定义路径加载插件 | 系统路径加载插件 | 用户同意后加载插件 | 隐藏恶意插件 )

    文章目录 一.自定义路径加载插件 二.系统路径加载插件 三.用户同意后加载插件 四.隐藏恶意插件 一.自定义路径加载插件 插件化应用中 , 宿主应用 加载 插件 APK , 需要获取该插件 APK 文 ...

  6. 深入理解Android Paging分页加载库

    来新公司半年多,最近一直在参与 Andorid 团队的架构升级工作.最近在图片选择库中使用了 paging 作为分页加载框架.顺便阅读了一下paging的源码.在这里记录一下. 初次接除 paging ...

  7. iOS 高效的分页加载

    今天在review代码的时候发现之前的tableview 和 collectview 的分页加载逻辑还有优化的余地,于是进行了优化. 一.tableview的分页加载的代码对比 没有优化之前的代码如下 ...

  8. c语言反编译_Gacrux:基于C语言的可自定义PE加载恶意软件

    写在前面的话 近期,我对这款名为Gacrux的恶意软件样本进行了分析.考虑到这两个样本文件的来源,我无法直接跟大家共享文件的哈希或直接公开样本文件,不过根据本文所提供的信息,大家可以轻松识别出这款恶意 ...

  9. listView分批和分页加载数据

    在Android应用程序中,有时候会向listView中加载很多数据,向listView中加载数据是一个耗时的过程,加载过多的数据用户停留在listView上,一直等待,给用户的体验特别不好,比如向服 ...

最新文章

  1. 负载均衡策略深入剖析
  2. bsdiff php,Apk差分升级Android客户端和Node.js服务端实现
  3. yoman不压缩html,使用Yeoman构建vuejs
  4. MySQL数据库同步小工具(Java实现)
  5. 2014.12.10 OC基础复习
  6. 力扣- -去除重复字母
  7. mybatis15 mapper方式 代码
  8. Swing 学习小记
  9. Node.js nodemn
  10. 总结过去10年的程序员生涯_给程序员的一些总结性忠告
  11. 这一次,彻底弄懂 Java 字节码文件!
  12. CISSP第一章:安全与风险管理知识点
  13. 40种javascript设计模式总结及实例代码演示
  14. python数据分析案例实战——融360客户贷款风险预测(信用卡)
  15. java实现随机游走算法_java – 简单的2D随机游走
  16. 从金山毒霸看这个社会的“底线”
  17. maven集成docker插件进行打包镜像并推送私服
  18. layui请求加token_琴海森林 JFinal-layui 文档、资料、学习、API,token验证
  19. php打开excel文件,PHP读取Excel文件的简单示例
  20. 【烈日炎炎战后端】消息队列(1.0万字)

热门文章

  1. 关于Android 6.0 刷入gapps 显示“设置向导”已停用的解决办法
  2. GameFramework专栏目录
  3. 【操作系统】页式储存方式,页,页表,页表项
  4. 转铁蛋白修饰共载紫杉醇和人参皂苷Rg3脂质体(TFLP-PTX/Rg3)
  5. BetaFlight统一硬件资源简单配置修改
  6. Python 鼠标控制
  7. for语句的强化(水仙花,九九乘法表,回文数等)
  8. C++继承(多继承、菱形继承?)
  9. 电路交换和分组交换有什么区别?
  10. 【物理应用】基于matlab模拟井筒多相流【含Matlab源码 2152期】