ListView实现分页加载(一)制作Demo
一、什么是分页加载
在下面的文章中,我们来讲解LitView分页加载的实现。什么是分页加载呢?我们先看几张效果图吧,如下:
 
                       
 
                     
效果说明:我们向上滑动ListView的时候,当滑动的最底部, 便会出现正在加载的进度条,当加载完成后,会出现加载后的数据。如此反复,这其实就是ListView的分页加载功能。像这样的工能,实在是太常见了。那么它是怎么实现的呢?
实现原理很简单,本质上,其实就是一个自定义的ListView,加上了底布局(即有进度条的那个布局),然后实现了ListView的OnScrollListener监听而已(即拖动监听)。下面我们就开始一步一步手把手使用模拟的数据来实现这个功能。
二、准备简单的ListView
为了准备模拟的数据,我们先搭建一个简单的普通的ListView出来,因为我们需要这样一个Demo。搭建完成后,我们再将ListView改成我们自定义的ListView,这样子你就能看清楚到底是怎么实现的了。
搭建ListView很简单。首先实现主布局和子项布局。分别如下:
主布局,activity_main.xml,代码如下:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#ccffff"> <ListView
android:id= "@+id/list_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:dividerHeight="5dp"
android:divider="#00cc00"></ListView>
</LinearLayout>
子项布局 item.xml,需要用到一张图片(就是那个刀刀狗),这里读者自行替换为你自己的图片即可。代码如下:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal" > <ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/me"/> <TextView
android:id="@+id/text_view"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="你好,分页加载"
android:layout_gravity="center_vertical"
android:textSize="20sp"/>
</LinearLayout>
好了,布局我们搞定了。下面就开始写MainActivity中的代码吧。代码如下:
package com.fuly.load; import java.util.ArrayList;
import java.util.List; import android.os.Bundle;
import android.app.Activity;
import android.widget.ListView; public class MainActivity extends Activity { private ListView lv;
private List<MyData> mDatas = new ArrayList<MyData>();
private MyAdapter mAdapter; protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main); initData();//该方法初始化数据
lv = (ListView) findViewById(R.id.list_view);
mAdapter = new MyAdapter(this, mDatas);
lv.setAdapter(mAdapter); } /**
* 该方法初始化数据,即提供初始的素材
*/
private void initData() {
for(int i = 0;i<12;i++){
MyData md = new MyData("你好,我是提前设定的");
mDatas.add(md);
} }
}
当然了,少不了我们的实体类(即封装数据的类),MyData.代码如下:
 package com.fuly.load;
 public class MyData {
     private String txt;
     public MyData(String txt) {
         this.txt = txt;
     }
     public String getTxt() {
         return txt;
     }
     public void setTxt(String txt) {
         this.txt = txt;
     }
 }
然后就是适配器,代码如下:
package com.fuly.load; import java.util.List; import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.TextView; public class MyAdapter extends ArrayAdapter { private List<MyData> Datas;
private LayoutInflater inflater; public MyAdapter(Context context, List data) {
super(context, -1, data);
inflater = LayoutInflater.from(context);
Datas = data;
} public View getView(int position, View convertView, ViewGroup parent) { ViewHolder vh = null; if(convertView == null){ convertView = inflater.inflate(R.layout.item, parent, false);
vh = new ViewHolder();
vh.tv = (TextView) convertView.findViewById(R.id.text_view); convertView.setTag(vh);
}else{
vh = (ViewHolder) convertView.getTag();
} vh.tv.setText(Datas.get(position).getTxt()); return convertView;
} class ViewHolder{ TextView tv;
}
}
好了,ListView的Demo我们已经准备好了。下面是运行效果:

我们看此时是没有分页加载的。那么我们还等什么,赶紧进入下一节,实现分页功能。
ListView实现分页加载(一)制作Demo的更多相关文章
- Android基本控件之listView(三)<用ListView实现分页加载>
		我们之前讨论了ListView的基本使用方法和ListView的优化 今天我们再来讨论一个关于ListView的一个新的东西~就是分页加载.那么什么是分页加载呢?简单点说,就是"下拉刷新&q ... 
- ListView实现分页加载(三)实现分页加载
		在上一篇中,我们实现了底部布局(即带上了进度条).没有读过的朋友可以点击下面的链接: http://www.cnblogs.com/fuly550871915/p/4866966.html 但是进度条 ... 
- android UI进阶之实现listview的分页加载
		上篇博文和大家分享了下拉刷新,这是一个用户体验非常好的操作方式.新浪微薄就是使用这种方式的典型. 还有个问题,当用户从网络上读取微薄的时候,如果一 下子全部加载用户未读的微薄这将耗费比较长的时间,造成 ... 
- ListView实现分页加载(二)实现底布局
		上一篇中,我们搭建好了一个Demo.没有阅读的可以点击下面的链接: http://www.cnblogs.com/fuly550871915/p/4866929.html 在这一篇中,我们将实现Lis ... 
- Android中Listview实现分页加载效果OnScrollListener
		activity_main.xml <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android& ... 
- WinForm ListView不分页加载大量数据
		WinForm的ListView在加载大量数据时会出现闪烁的问题,同时数据加载很慢.如果你的列表中有超过千条的数据且不做特殊处理还是用普通的ListView.Items.Add(),估计你的用户得抱怨 ... 
- Android ListView分页加载时图片显示问题
		场景:Android ListView需要分页加载,每个item中会有图片,图片又是从网络下载的. 问题:在滑动加载下一页时,上一页的图片明明已经下载完成了,但是无法显示出来. Bug重现: 1,加载 ... 
- Android中ListView分页加载数据
		public class MainActivity extends Activity { private ListView listView=null; //listview的数据填充器 privat ... 
- ListView上拉刷新和分页加载完整的Dome
		很多人工作的过程中都会碰到ListView下拉刷新和分页加载,然后大多数公司都已经把框架写好了,大家直接用就可以了,有些人一直对这个事情处于迷茫状态,为了让大家对上拉刷新和分页加载有一个比较全面的认识 ... 
随机推荐
- TypeLoadException: Could not load type 'Microsoft.AspNetCore.Mvc.Internal.IHttpResponseStreamWriterFactory' from assembly 'Microsoft.AspNetCore.Mvc.Core, Version=2.1.2.0 ...
			今天调试 asp.net core 2.0 项目时遇到了如下错误: TypeLoadException: Could not load type 'Microsoft.AspNetCore.Mvc.I ... 
- 栈C++实现
			栈的核心是LIFO(Last In First Out),即后进先出 出栈和入栈只会对栈顶进行操作,栈底永远为0.如果是入栈,要将入栈元素赋值给栈数组,再将栈顶上移一位:出栈时要先将栈顶下移一位,再将 ... 
- 软工网络15Alpha阶段敏捷冲刺博客汇总
			博客链接汇总: 第一篇:http://www.cnblogs.com/pubg722/p/8891605.html 第二篇:http://www.cnblogs.com/pubg722/p/89090 ... 
- 深入理解JavaScript系列(48):对象创建模式(下篇)
			介绍 本篇主要是介绍创建对象方面的模式的下篇,利用各种技巧可以极大地避免了错误或者可以编写出非常精简的代码. 模式6:函数语法糖 函数语法糖是为一个对象快速添加方法(函数)的扩展,这个主要是利用pro ... 
- redis操作基本命令
			Redis—— Remote Dictionary Server,它是一个开源的使用ANSI C语言编写.支持网络.可基于内存亦可持久化的日志型.Key-Value数据库,并提供多种语言的API,我们 ... 
- Java 基础(8)——流程控制
			上次的运算符都消化好了吗?每一天都要用到一些哦~ 以前有提到过一嘴,程序执行都是从上到下执行的,emm,学到这里,感觉这句话是对的也是错的了…… 如果都是一行一行执行下去的话,上节课的例子: 今天不上 ... 
- 移动web中的幻灯片切换效果
			百度或者谷歌下类似的插件有很多,原理都差不多,关键适合自己的项目,如果移动端要引入jquery这么大的插件,只能呵呵了.... 下面是工作中针对webkit内核的浏览器写的,html很简单: < ... 
- Web前端面试指导(十七):一个满屏 品 字布局 如何设计?
			题目点评 这道题目有可能是笔试题,有可能面谈的时候进行叙述,如果是笔试题要求对css样式代码非常熟练,如果是面谈叙述,就需要你的表达能力非常强,要抓住要点,把需要用到的技能点讲清楚就可以了. 需要用到 ... 
- inline-block元素,在同一行上下显示
			两个元素使用了inline-block,并列显示时,会上下显示,给人感觉不在同一行 原因:其中一个元素使用了overflow:hidden,导致了基线变更 解决:1.另一个元素也添加overflow: ... 
- 54个提高PHP程序运行效率的方法(转载)
			原文地址:http://www.jb51.net/article/69677.htm 1. 如果一个方法可静态化,就对它做静态声明.速率可提升至4倍. 2. echo 比 print 快. 3. 使用 ... 
