ZMY_自定义分页加载
//自定义分页加载
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_自定义分页加载相关推荐
- 关于layerui laypage自定义分页加载table问题
1:定义页码和每页展示条数 let pageNum = 1; let pageSize = 10; 2:定义layerui工具 layui.use(['table','laypage'], funct ...
- 基于Android官方AsyncListUtil优化经典ListView分页加载机制(二)
基于Android官方AsyncListUtil优化经典ListView分页加载机制(二) 我写的附录文章1,介绍了如何使用Android官方的分页加载框架AsyncListUtil优化改进常见的Re ...
- 微信小程序 实现分页加载数据
实现分页加载数据要用到页面加载触底事件 onReachBottom: function () { } 首先在 js 定义初始数据 data: { //用来接收后端数据list:[], //当前页cur ...
- 微信小程序云数据库触底分页加载,下拉无限加载,第一次请求数据随机,随机获取数据库的数据
效果图 小程序云开发分页加载代码 <!--pages/chatList/chatList.wxml--> <view class="pageTitle">家 ...
- 【Android 插件化】基于插件化的恶意软件的加载策略分析 ( 自定义路径加载插件 | 系统路径加载插件 | 用户同意后加载插件 | 隐藏恶意插件 )
文章目录 一.自定义路径加载插件 二.系统路径加载插件 三.用户同意后加载插件 四.隐藏恶意插件 一.自定义路径加载插件 插件化应用中 , 宿主应用 加载 插件 APK , 需要获取该插件 APK 文 ...
- 深入理解Android Paging分页加载库
来新公司半年多,最近一直在参与 Andorid 团队的架构升级工作.最近在图片选择库中使用了 paging 作为分页加载框架.顺便阅读了一下paging的源码.在这里记录一下. 初次接除 paging ...
- iOS 高效的分页加载
今天在review代码的时候发现之前的tableview 和 collectview 的分页加载逻辑还有优化的余地,于是进行了优化. 一.tableview的分页加载的代码对比 没有优化之前的代码如下 ...
- c语言反编译_Gacrux:基于C语言的可自定义PE加载恶意软件
写在前面的话 近期,我对这款名为Gacrux的恶意软件样本进行了分析.考虑到这两个样本文件的来源,我无法直接跟大家共享文件的哈希或直接公开样本文件,不过根据本文所提供的信息,大家可以轻松识别出这款恶意 ...
- listView分批和分页加载数据
在Android应用程序中,有时候会向listView中加载很多数据,向listView中加载数据是一个耗时的过程,加载过多的数据用户停留在listView上,一直等待,给用户的体验特别不好,比如向服 ...
最新文章
- 负载均衡策略深入剖析
- bsdiff php,Apk差分升级Android客户端和Node.js服务端实现
- yoman不压缩html,使用Yeoman构建vuejs
- MySQL数据库同步小工具(Java实现)
- 2014.12.10 OC基础复习
- 力扣- -去除重复字母
- mybatis15 mapper方式 代码
- Swing 学习小记
- Node.js nodemn
- 总结过去10年的程序员生涯_给程序员的一些总结性忠告
- 这一次,彻底弄懂 Java 字节码文件!
- CISSP第一章:安全与风险管理知识点
- 40种javascript设计模式总结及实例代码演示
- python数据分析案例实战——融360客户贷款风险预测(信用卡)
- java实现随机游走算法_java – 简单的2D随机游走
- 从金山毒霸看这个社会的“底线”
- maven集成docker插件进行打包镜像并推送私服
- layui请求加token_琴海森林 JFinal-layui 文档、资料、学习、API,token验证
- php打开excel文件,PHP读取Excel文件的简单示例
- 【烈日炎炎战后端】消息队列(1.0万字)