Android_自己写的简单上拉加载

原创 2016年05月31日 10:05:43

DO:
main.xml

<?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="vertical" >

    <ListView
        android:id="@+id/listView_listView1"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        />

</LinearLayout>

footer.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <ProgressBar
        android:id="@+id/progressBar1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_toRightOf="@+id/progressBar1"
        android:layout_marginTop="10dp"
        android:text="加载中......"
        android:textAppearance="?android:attr/textAppearanceLarge" />

</RelativeLayout>

Activity

package com.lxf;

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

import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.os.SystemClock;
import android.view.View;
import android.widget.AbsListView;
import android.widget.AbsListView.OnScrollListener;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.Toast;

/**
 * @address BeiJing
 * @author LiXufei
 * @function android_listview
 */
public class cListView extends Activity{

    private ListView view1;
    private List<String> list = new ArrayList<String>();
    private ArrayAdapter<String> adapter;
    private final int SUCCESS = 0;      //加载成功标志
    private boolean flag = true;    //是否刷新
    private View footerView;    //页脚

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

        view1 = (ListView) findViewById(R.id.listView_listView1);

        //初始化页脚
        footerView = getLayoutInflater().inflate(R.layout.android_listview_footer,null );
        //初始化数据
        list.addAll(addData(20));
        //初始化适配器
        adapter = new ArrayAdapter<String>(cListView.this, android.R.layout.simple_list_item_1, list);
        //适配器
        view1.setAdapter(adapter);
        //设置滚动监听
        view1.setOnScrollListener(new MyScrollListner(5, 20));
    }

    //handler
    private Handler handler = new Handler(){
        public void handleMessage(android.os.Message msg) {

            if (msg.what == SUCCESS) {
                flag = true;
                List<String>res = (List<String>) msg.obj ;
                list.addAll(res);
                adapter.notifyDataSetChanged();
                Toast.makeText(cListView.this, "加载成功!", 0).show();
            }
            if (flag) {
                if (view1.getFooterViewsCount() > 0) {
                    view1.removeFooterView(footerView);
                }
            }

        };
    };

    //滚动刷新类
    class MyScrollListner implements OnScrollListener{

        private int pageCount;  //加载的页数
        private int pageSize;   //加载的个数

        public MyScrollListner(int countPage, int sizePage) {
            super();
            this.pageCount = countPage;
            this.pageSize = sizePage;
        }

        public void onScrollStateChanged(AbsListView view, int scrollState) {       }

        public void onScroll(AbsListView view, int firstVisibleItem,
                int visibleItemCount, int totalItemCount) {

            int currentCount = firstVisibleItem+visibleItemCount;   //当前个数
            int currentPage = currentCount/pageSize;    //当前的页数
            int nextPage = currentPage+1;   //下个页数

            if (currentCount == totalItemCount && nextPage <= pageCount && flag) {  //执行数据刷新
                view1.addFooterView(footerView);    //添加页脚
                flag = false;   //改变标志
                new Thread(){
                    public void run() {
                        SystemClock.sleep(3000);//睡眠3秒,不会立即加载
                        List<String> addData = addData(pageSize);   //获取新数据
                        //通过handler更新listview
                        Message message = Message.obtain();
                        message.what = SUCCESS;
                        message.obj = addData;
                        handler.sendMessage(message);
                    };
                }.start();
            }
        }
    }

    //添加数据方法
    public List<String> addData(int Count){
        ArrayList<String> datas = new ArrayList<String>();
        //准备数据
        for (int i = 0; i <= Count; i++) {
            datas.add("数据"+i);
        }
        return datas;
    }

}
版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

Android简单的上拉加载

  • 2017年03月22日 23:54
  • 208KB
  • 下载

android 简单的下拉刷新,上拉加载

推荐阅读:使用RecyclerView添加Header和Footer的方法                       RecyclerView的使用之HelloWorld Recycle...

Android的ListView简单的自定义上拉加载

啥都不多说,直接上代码,自己看注释 MainActivity的布局

android下拉刷新上拉加载简单的实现方法;

项目中需要用到android下拉刷新和上拉加载;所以学习了一个很简单的很方便的一个例子;自己也写过下拉刷新和上拉加载的功能;但是如果每个界面都要实现这个功能的话非常的麻烦;所以学习了别人很好的demo...

android 简单的上拉加载实现

android的下拉刷新和上拉加载有很多的开源工程
  • cys1991
  • cys1991
  • 2014年07月15日 19:48
  • 580

Android Recyclerview 简单实用 瀑布流等方式,并加入上下拉加载

RecyclerView 已经出现有一年多了,看过的和没看过的都需要了解一下。 据官方的介绍,该控件用于在有限的窗口中展示大量数据集,其实这样功能的控件我们并不陌生,例如:ListView、Gri...

自个儿写Android的下拉刷新/上拉加载控件

前段时间自己写了一个能够“通用”的,支持下拉刷新和上拉加载的自定义控件。可能现如今这已经不新鲜了,但有兴趣的朋友还是可以一起来看看的。 与通常的View配合使用(比如ImageView)与ListVi...

自个儿写Android的下拉刷新/上拉加载控件 (续)

本文算是对之前的一篇博文《自个儿写Android的下拉刷新/上拉加载控件》的续章,如果有兴趣了解更多的朋友可以先看一看之前的这篇博客。事实上之所以会有之前的那篇博文的出现,是起因于前段时间自己在写一个...

iscroll简单的下拉刷新上拉加载

  • 2017年07月25日 09:47
  • 15KB
  • 下载

简单上拉加载下拉刷新实现

  • 2017年06月20日 15:11
  • 39.59MB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Android_自己写的简单上拉加载
举报原因:
原因补充:

(最多只允许输入30个字)