//----------------------MainActivity中---------------------------------------------------

package com.example.fenye;

import java.util.ArrayList;
import java.util.List;

import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.widget.AbsListView;
import android.widget.AbsListView.OnScrollListener;
import android.widget.ListView;
import android.widget.Toast;

public class MainActivity extends Activity {
    //每次加载的数量
    private final int PAGE_NUMBER=15;
    //index第几条目
    private int index=0;
    
    private List<String> list=new ArrayList<String>();

private ListView listview;
    private MyAdapter adapter;

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //找到控件Listview
        listview = (ListView) findViewById(R.id.listview);
        
        //设置Listview的滚动监听
        listview.setOnScrollListener(new OnScrollListener() {
            
            @Override
            public void onScrollStateChanged(AbsListView view, int scrollState) {
                //判断如果滚动停止时
                if (scrollState==OnScrollListener.SCROLL_STATE_IDLE) {
                    //如果滚到到了最下面一行
                    if (view.getLastVisiblePosition()==list.size()-1) {
                        //从新赋值
                        index=index+PAGE_NUMBER;
                        //吐司提醒
                        Toast.makeText(MainActivity.this, "加载中...", 0).show();
                        //重新加载数据
                        getData();
                    }
                }
                
            }
            
            @Override
            public void onScroll(AbsListView view, int firstVisibleItem,
                    int visibleItemCount, int totalItemCount) {
                
                
            }
        });
        
        //加载数据
        getData();
        
    }

//加载数据
    private void getData() {
        new Thread(){
            public void run() {
                //index第几条目
                for (int i = index; i < index+PAGE_NUMBER; i++) {
                    list.add("我是条目"+i);
                }
            };
        }.start();
        
        //每次加载的数量
        try {
            //延迟1秒
            Thread.sleep(1000);
        } catch (InterruptedException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        //若果适配器为空,就创建适配器
        if (adapter==null) {
            adapter = new MyAdapter(list, this);
            listview.setAdapter(adapter);
        }else{
            //刷新适配器
            adapter.notifyDataSetChanged();
        }
        
    }

}

//------------------------main.xml布局文件中-----------------------------

<ListView android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:id="@+id/listview"></ListView>

//-------------------适配器----创建一个类继承----BaseAdapter---------------------------------------------

package com.example.fenye;

import java.util.List;

import android.content.Context;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.TextView;

public class MyAdapter extends BaseAdapter{
    private List<String> list;
    private Context context;

public MyAdapter(List<String> list, Context context) {
        super();
        this.list = list;
        this.context = context;
    }

@Override
    public int getCount() {
        // TODO Auto-generated method stub
        return list.size();
    }

@Override
    public Object getItem(int position) {
        // TODO Auto-generated method stub
        return list.get(position);
    }

@Override
    public long getItemId(int position) {
        // TODO Auto-generated method stub
        return position;
    }

@Override
    public View getView(int position, View convertView, ViewGroup parent) {
        if (convertView==null) {
            convertView=View.inflate(context, R.layout.list_item, null);
            
        }
        TextView tv_name=(TextView) convertView.findViewById(R.id.tv_name);
        tv_name.setText(list.get(position));
        
        return convertView;
    }

}

//-----------------list_item.xml布局文件中-----------------------------------------

<ImageView android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/ic_launcher"/>
    <TextView android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/tv_name"/>

//================以上是自动加载===========================================

//==============下面做一下手动加载=====只需要在=onCreate的方法中修改一下,如下:=================

/*
 * 手动加载在Listview中用到listview.addFooterView(view),把button添加到Listview的最下面,
 * 点击时,重新赋值和重新加载数据
 */

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

//找到控件Listview
        listview = (ListView) findViewById(R.id.listview);

//找到button的布局
        View view=getLayoutInflater().inflate(R.layout.button_footer, null);
        //把控件button添加到Listview的下面
        listview.addFooterView(view);
        Button button=(Button) view.findViewById(R.id.button);
                                    
        //加载数据
        getData();
        button.setOnClickListener(new OnClickListener() {
            
            @Override
            public void onClick(View v) {
                //重新赋值
                index=index+PAGE_NUMBER;
                //吐司提示
                Toast.makeText(MainActivity.this, "加载中...", 0).show();
                //加载数据
                getData();
                
            }
        });
        
    }

//---------------button_footer.xml布局文件中------------------

<Button android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:id="@+id/button"
        android:text="点击加载"/>

Android中的分页加载的更多相关文章

  1. Android中ListView分页加载数据

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

  2. arcgis android 中shapefile的加载

    前言 本文为大家分享arcgis android 中shapefile的加载,默认你有java环境,懂一定的android基础知识,默认你已经安装android studio.如缺乏以上环境和知识,请 ...

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

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

  4. Android中的动态加载机制

    在目前的软硬件环境下,Native App与Web App在用户体验上有着明显的优势,但在实际项目中有些会因为业务的频繁变更而频繁的升级客户端,造成较差的用户体验,而这也恰恰是Web App的优势.本 ...

  5. Android中ListView异步加载图片错位、重复、闪烁问题分析及解决方案

    我们在使用ListView异步加载图片的时候,在快速滑动或者网络不好的情况下,会出现图片错位.重复.闪烁等问题,其实这些问题总结起来就是一个问题,我们需要对这些问题进行ListView的优化. 比如L ...

  6. Android中的Glide加载图片

    注意:在Android Studio的项目的build.gradle中添加: compile 'com.github.bumptech.glide:glide:3.6.1' 然后同步一下 目录: 使用 ...

  7. Android中ListView动态加载数据

    1. 引言: 为了提高ListView的效率和应用程序的性能,在Android应用程序中不应该一次性加载ListView所要显示的全部信息,而是采取分批加载策略,随着用户的滑动,动态的从后台加载所需的 ...

  8. Android中一张图片加载后所占用内存大小的获取与测试

    Android程序中一旦加载的图片比较多,就有可能出现Out of Memory而导致程序崩溃.这个一方面是因为Android系统本身对于每个单独的进程有内存大小的限制(有16M,64M,128M,2 ...

  9. Android中使用POI加载与显示word文档

    最近打算实现一个功能:在Android中加载显示Word文档,当然这里不是使用外部程序打开.查看一些资料后,打算采用poi实现,确定了以下实现思路: 将ftp中的word文档下载到本地. 调用poi将 ...

随机推荐

  1. 对Big O的新的认识

    对Big O的新的认识 一个问题,它有很多种算法都能实现.每种算法它的时间.空间复杂度不一样.比如: 问题1: 求最大连续子序列和的问题,可以有O(n3).O(n2).O(nlogn)和O(n)四种时 ...

  2. 对一个表中所有列数据模糊查询adoquery

    如何用adoquery对一个表中所有列进行模糊查询: procedure TForm3.Button4Click(Sender: TObject); var ASql,AKey: string; I: ...

  3. Gentoo解决Windows双系统时间不同步的问题

    升级后的gentoo不再使用/etc/conf.d/clock,而是使用/etc/conf.d/hwclock来设置和时间相关了. 在/etc/conf.d/hwclock文件中设置系统时间为本地时间 ...

  4. 【Loadrunner】初学Loadrunner——参数化设置(Xml类型)

    不是所有类型的参数都是和XML类型,只有一段标准的XML语句块,而且需要选中整个完整的XML语句块才可以使用XML的参数化.单个变量是不适合XML的参数化的.在选择的时候需要选中XML语句块的起始标签 ...

  5. 一把刀终极配置 For XP v2.0 免费绿色版

    软件名称: 一把刀终极配置 For XP 软件语言: 简体中文 授权方式: 免费软件 运行环境: WinXP 软件大小: 924KB 图片预览: 软件简介: 一把刀终极配置 For XP,用于快速方便 ...

  6. 2015 ACM/ICPC Asia Regional Hefei Online

    1001 Monitor the Alpacas 1002 The Relationship in Club 1003 Difference of Clustering 两边离散化.暴力扫C就过了. ...

  7. NodeJS 学习笔记一

    他创造NodeJS的目的是为了实现高性能Web服务器,他首先看重的是事件机制和异步IO模型的优越性,而不是JS.但是他需要选择一种编程语言实现他的想法,这种编程语言不能自带IO功能,并且需要能良好支持 ...

  8. HBase数据的导入和导出

    查阅了几篇中英文资料,发现有的地方说的不是很全部,总结在此,共有两种命令行的方式来实现数据的导入导出功能,即备份和还原. 1 HBase本身提供的接口 其调用形式为: 1)导入 ./hbase org ...

  9. C# 获取字符的Unicode编码

    using UnityEngine;using System.Collections;using System.Collections.Generic; List<); string chars ...

  10. flex、As 3.0 小知识

    <s:CheckBox  id="checkBox" x="10" y="5" label="{new ObjectProx ...