//----------------------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. json 和 数组的区别

    json是javascript中的一种数据格式,类似于数组,但又不同于数组,区别在于下标: 例如,var obj=[a:15,b:10,c:3,d:8]: //这是json的写法 var  arr=[ ...

  2. ActiveMQ in Action(3) - Persistence

    关键字: activemq 2.3 Persistence2.3.1 AMQ Message Store    AMQ Message Store是ActiveMQ5.0缺省的持久化存储.Messag ...

  3. HUST 1404 Hamming Distance(字符串)

    Hamming Distance Description Have you ever heard of the Hamming distance. It is the number of positi ...

  4. 手机下的ev.pageX无效

      把  ev.pageX  换成  e.originalEvent.targetTouches[0].pageX;   例子: var start_x, start_y, end_x, end_y, ...

  5. poj2386

    湖计数描述由于最近的降雨,水汇集在不同的地方,在农民约翰的领域,这是代表一个长方形的N×M(1μ= 100:1 = M = 100)平方.每一方都包含水(’w')或干燥的土地(“.”).农民约翰想弄清 ...

  6. elicpse之tomcat配置

    环境:eclipse4.5.0,tomcat7.0.57 部署描述:按照一般的部署,把tomcat部署到webapps的下面,server options 下面选的是 Modules auto rel ...

  7. zabbix3.2在lamp环境安装

    zabbix官网下载zabbix-3.2.1.tar.gz wget http://jaist.dl.sourceforge.net/project/zabbix/ZABBIX%20Latest%20 ...

  8. STM32F407的串口采用DMA收发数据

    源:STM32F407的串口采用DMA收发数据

  9. laravel性能优化

    1. 配置信息缓存 使用以下 Artisan 自带命令,把 config 文件夹里所有配置信息合并到一个文件里,减少运行时文件的载入数量: php artisan config:cache 上面命令会 ...

  10. .net 应用Memcached 缓存 demo(非转载,文件下载地址有效)

    一.准备: Memcaced服务端下载地址: http://files.cnblogs.com/sjns/memcached_en32or64.rar Memcaced 客户端类库:http://fi ...