public class MainActivity extends Activity {
private ListView listView;
private List<String> data = new ArrayList<String>();
ArrayAdapter<String> adapter;
View footer; @Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
///通过xml布局文件生成View对象
footer = getLayoutInflater().inflate(R.layout.footer, null); listView = (ListView) this.findViewById(R.id.listView); //为ListView设置滑动监听事件处理器
listView.setOnScrollListener(new ScrollListener()); data.addAll(DataService.getData(0, 20));
adapter = new ArrayAdapter<String>(this, R.layout.listview_item, R.id.textView, data);
listView.addFooterView(footer);//添加页脚(放在ListView最后,并且要放在setAdapter()方法之前,因为内部会有所包装)
listView.setAdapter(adapter);
listView.removeFooterView(footer);//刚开始时删除页脚
} private int number = 20;//每次获取多少条数据
private int maxpage = 5;//总共有多少页
private boolean loadfinish = true;
private final class ScrollListener implements OnScrollListener{
public void onScrollStateChanged(AbsListView view, int scrollState) {
Log.i("MainActivity", "onScrollStateChanged(scrollState="+ scrollState+ ")");
} public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
Log.i("MainActivity", "onScroll(firstVisibleItem="+ firstVisibleItem+ ",visibleItemCount="+
visibleItemCount+ ",totalItemCount="+ totalItemCount+ ")"); final int loadtotal = totalItemCount;
int lastItemid = listView.getLastVisiblePosition();//获取当前屏幕最后Item的ID
if((lastItemid+1) == totalItemCount){//达到数据的最后一条记录
if(totalItemCount > 0){
//当前页
int currentpage = totalItemCount%number == 0 ? totalItemCount/number : totalItemCount/number+1;
int nextpage = currentpage + 1;//下一页
if(nextpage <= maxpage && loadfinish){
loadfinish = false;
//加载数据时显示页脚
listView.addFooterView(footer); new Thread(new Runnable() {
public void run() {
try {
Thread.sleep(3000);
} catch (InterruptedException e) {
e.printStackTrace();
}
List<String> result = DataService.getData(loadtotal, number);
handler.sendMessage(handler.obtainMessage(100, result));
}
}).start();
}
} }
}
} Handler handler = new Handler(){
public void handleMessage(Message msg) {
data.addAll((List<String>) msg.obj);
adapter.notifyDataSetChanged();//告诉ListView数据已经发生改变,要求ListView更新界面显示
if(listView.getFooterViewsCount() > 0) listView.removeFooterView(footer);
loadfinish = true;
}
}; }
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal" >
<!--系统中的圆形滚动条--> <ProgressBar android:id="@+id/c81_forthBar"
android:layout_width="50dp"
android:layout_height="wrap_content"
style="?android:attr/progressBarStyle" />
<TextView android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center_vertical"
android:textSize="20sp"
android:text="数据正在加载..."
/>
</LinearLayout>
<!--页脚xml-->

android 批量加载数据的更多相关文章

  1. Android学习笔记_37_ListView批量加载数据和页脚设置

    1.在activity_main.xml布局文件中加入ListView控件: <RelativeLayout xmlns:android="http://schemas.android ...

  2. Android 异步加载数据 AsyncTask异步更新界面

    官方文档:     AsyncTask enables proper and easy use of the UI thread. This class allows to perform backg ...

  3. 【HBase】通过Bulkload批量加载数据到Hbase表中

    目录 需求 步骤 一.开发MapReduce 二.打成Jar包放到linux执行 三.有两种办法将HFile文件加载到HBase表中 开发代码 Hadoop命令运行 需求 将hdfs上面的这个路径 / ...

  4. android LoaderManger加载数据Tip

    要查看LoaderManager的具体介绍请看博客: LoaderManager介绍 使用时发现不管怎么调用getLoaderManager().restartLoader(LOADER_TYPE_Q ...

  5. java攻城狮之路(Android篇)--widget_webview_metadata_popupwindow_tabhost_分页加载数据_菜单

    一.widget:桌面小控件1 写一个类extends AppWidgetProvider 2 在清单文件件中注册: <receiver android:name=".ExampleA ...

  6. android左右滑动加载分页以及动态加载数据

    android UI 往右滑动,滑动到最后一页就自动加载数据并显示 如图: package cn.anycall.ju; import java.util.ArrayList; import java ...

  7. Android中ListView分页加载数据

    public class MainActivity extends Activity { private ListView listView=null; //listview的数据填充器 privat ...

  8. android 中使用缓存加载数据

    最近app快完工了,但是很多列表加载,新闻咨询等数据一直从网络请求,速度很慢,影响用户体验,所以寻思用缓存来加载一些更新要求不太高的数据 废话不多说,上代码 欢迎转载,但请保留文章原始出处:)  博客 ...

  9. 【Android进阶】Listview分页加载数据的实现

    Listview分页加载数据的实现 public class MainActivity extends Activity { protected static final int SUCCESS_GE ...

随机推荐

  1. 深入研究浏览器对HTML解析过程

    HTML HTML解析 HTML解析是一个将字节转化为字符,字符解析为标记,标记生成节点,节点构建树的过程. 标记化算法 是词法分析过程,将输入内容解析成多个标记.HTML标记包括起始标记.结束标记. ...

  2. redis-3.0.0安装

    redis-3.0.0安装 前言 redis是常用的no-sql数据库,常用于缓存数据,同时,他也可以持久化数据.他是C语言开发的,所以安装的时候需要编译. 单机版redis yum install ...

  3. Centos防火墙设置与端口开放

    前言 最近在部署项目的时候遇到了一些问题,阿里云主机要配置安全组策略和端口.对于这点看到了一片好的博文,特此总结记录下. iptables 方法一 打开某个端口 // 开启端口 iptables -A ...

  4. Idea maven项目不能新建package和class的解决【转】

    如图,新建的maven项目不能新建package 这是因为java是普通的文件夹,要设置为 现在就可以了 博客原链接:http://blog.csdn.net/qq_24949727/article/ ...

  5. jsonp详细原理之一

    /*script标签是不存在跨域请求的,类似的还有img,background:url,link 你可以想象一下,平时的这些标签都是可以直接引入外部资源的,所以是不存在跨域问题的*/ function ...

  6. 【知识强化】第四章 网络层 4.8 移动IP

    这节课我们来学习一下移动IP. 那移动IP呢要跟动态IP区分开.动态IP是指,通过使用DHCP协议,在一个局域网内部的一台主机,就可以动态地获得一个IP地址.那这里面的移动IP是什么意思呢? 我们来举 ...

  7. Redis 设置权限密码,以及如何开启关闭设置

    linux redis 设置密码:   在服务器上,这里以linux服务器为例,为redis配置密码. 1.第一种方式 (当前这种linux配置redis密码的方法是一种临时的,如果redis重启之后 ...

  8. opengl 库glew

    OpenGL OpenGL是个专业的3D程序接口,是一个功能强大,调用方便的底层3D图形库.OpenGL的前身是SGI公司为其图形工作站开发的IRIS GL.IRIS GL是一个工业标准的3D图形软件 ...

  9. SP2-0618: Cannot find the Session Identifier.

    [oracle@trade1 ~]$ sqlplus  user1/user1 SQL*Plus: Release 11.2.0.3.0 Production on Tue Aug 6 14:31:1 ...

  10. Ubuntu 16.04 install R language

    apt-get install r-base r-base-dev