//---------------主布局文件----------------------------

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

//---------------主Activity------------------------------

package com.example.listviewscroll;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.ArrayList;
import java.util.List;

import com.example.listviewscroll.JingDian.ResultBean;
import com.example.listviewscroll.JingDian.ResultBean.RowsBean;

import com.google.gson.Gson;

import android.os.AsyncTask;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.app.Activity;
import android.util.Log;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.AbsListView;
import android.widget.TextView;
import android.widget.Toast;
import android.widget.AbsListView.OnScrollListener;
import android.widget.ListView;

public class MainActivity extends Activity {

    private ListView lv;
    private List<RowsBean> rowsBeans = new ArrayList<JingDian.ResultBean.RowsBean>();        
    private MyAdapter adapter;
    private List<RowsBean> list;
    // 定义一个页数
    private int ye = 0;

    private Handler handler = new Handler() {
        public void handleMessage(Message msg) {
            switch (msg.what) {
            case 0:
                // 获得数据
                String text = (String) msg.obj;
                tojson(text);
                break;

            default:
                break;
            }
        }

    };
    
    
//----------注意:使用了Gson.jar包-解析json串---------

    // 解析数据
    private void tojson(String text) {
        
        Gson gson = new Gson();
        // 类名
        JingDian jingDian = gson.fromJson(text, JingDian.class);

        ResultBean resultBean = jingDian.getResult();
        // 添加
        rowsBeans = resultBean.getRows();
        Log.i("11111111111", rowsBeans.toString());
        list.addAll(rowsBeans);
        
          //更新适配器
        if (adapter == null) {
            adapter = new MyAdapter(list,this);            
            lv.setAdapter(adapter);             
            } else {                 
                adapter.notifyDataSetChanged();
                }
                 
    };
    
//------------------onCreate中------------------
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //找到控件Listview
        lv = (ListView) findViewById(R.id.lv);
      
        list=new ArrayList<JingDian.ResultBean.RowsBean>();
        //获得网络数据
        huodeshuju(ye);
        //设置Listview的滑动监听
        lv.setOnScrollListener(new OnScrollListener() {
            
            @Override
            public void onScrollStateChanged(AbsListView view, int scrollState) {
                switch (scrollState) {
                //滚动结束
                case OnScrollListener.SCROLL_STATE_IDLE:
                    //滚动停止时,判断如果滚动到底部
                    if (view.getLastVisiblePosition()==view.getCount()-1) {
                        
                        // 使页数加1
                        ye++;
                        Toast.makeText(MainActivity.this, "" + ye, Toast.LENGTH_SHORT).show();
                        huodeshuju(ye);
                        adapter.notifyDataSetChanged();
                        
                        
                    }else if (view.getFirstVisiblePosition()==0) {
                        //滚动到顶部
                        // 重新定义为第一页
                        
                        list.clear();
                        ye = 1;
                        Toast.makeText(MainActivity.this, "" + ye, Toast.LENGTH_SHORT).show();
                        // 获得数据
                        huodeshuju(ye);
                        // 刷新适配器
                        adapter.notifyDataSetChanged();
                        
                    }
                    
                    break;
                //开始滚动
                case OnScrollListener.SCROLL_STATE_FLING:
                    
                    break;
                //正在滚动
                case OnScrollListener.SCROLL_STATE_TOUCH_SCROLL:
                    
                    break;

                default:
                    break;
                }
                
            }
            
            @Override
            public void onScroll(AbsListView view, int firstVisibleItem,int visibleItemCount, int totalItemCount) {
                
                
            }
        });
       
        
    }
    
    
    
    // 获得数据
        private void huodeshuju(final int ye) {
            // 使用线程

            new Thread() {
                public void run() {
                    try {
                        // 先创建出了一个URL对象,urlPath:是我们访问接口地址
                        URL url = new URL(
                                "http://api.fang.anjuke.com/m/android/1.3/shouye/recInfosV3/?city_id=14&lat=40.04652&lng=116.306033&api_key=androidkey&sig=9317e9634b5fbc16078ab07abb6661c5&macid=45cd2478331b184ff0e15f29aaa89e3e&app=a-ajk&_pid=11738&o=PE-TL10-user+4.4.2+HuaweiPE-TL10+CHNC00B260+ota-rel-keys%2Crelease-keys&from=mobile&m=Android-PE-TL10&cv=9.5.1&cid=14&i=864601026706713&v=4.4.2&qtime=20160411091603&pm=b61&uuid=1848c59c-185d-48d9-b0e9-782016041109&_chat_id="
                                        + ye);

                        // URL链接对象,通过URL对象打开一个connection链接对像
                        HttpURLConnection urlConnection = (HttpURLConnection) url
                                .openConnection();
                        // 设置urlConnection对象链接超时
                        urlConnection.setConnectTimeout(5000);
                        // 设置urlConnection对象获取数据超时
                        urlConnection.setReadTimeout(5000);
                        // 设置本次urlConnection请求方式
                        urlConnection.setRequestMethod("GET");

                        // 获取本次网络请求的状态码
                        int code = urlConnection.getResponseCode();
                        // 如果本次返回的状态吗是200(成功)
                        if (code == 200) {
                            // 调用urlConnection.getInputStream得到本次请求所返回的结果流
                            InputStream inputStream = urlConnection
                                    .getInputStream();
                            // 创建一个BufferedReader,去读取结果流
                            BufferedReader reader = new BufferedReader(
                                    new InputStreamReader(inputStream));
                            String readLine;
                            StringBuffer buffer = new StringBuffer();
                            while ((readLine = reader.readLine()) != null) {
                                buffer.append(readLine);

                            }
                            // 读取完结果流之后所得到的结果
                            String result = buffer.toString();
                            Log.i("数据:----", ye + ":" + result);
                            Message message = new Message();
                            message.what = 0;
                            message.obj = result;
                            handler.sendMessage(message);

                        }
                    } catch (MalformedURLException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    } catch (IOException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }

                };
            }.start();
            
            

        }

    
    
}

Listview的OnScrollListener的滑动监听实现分页加载的更多相关文章

  1. 纯JS监听document是否加载完成

    欢迎加入前端交流群交流知识&&获取视频资料:749539640 概述 一个document 的 Document.readyState 属性描述了文档的加载状态. 一个文档的 read ...

  2. ListView实现分页加载(三)实现分页加载

    在上一篇中,我们实现了底部布局(即带上了进度条).没有读过的朋友可以点击下面的链接: http://www.cnblogs.com/fuly550871915/p/4866966.html 但是进度条 ...

  3. 使用swipecard实现卡片视图左右滑动监听以及点击监听

     前言: 大家好,今天给大家介绍安卓一种特别实用有很酷炫的组件swipecard,当然这并不是安卓爸爸创造的,这是国内的一个我认为是大牛的一个人随便写着玩儿搞出来了,我看了他的代码介绍已经很清晰了,但 ...

  4. Android 自定义ScrollView的滑动监听事件

    项目结构: 1.LazyScrollView类(自定义ScrollView) package android.zhh.com.myapplicationscrollview; /** * Create ...

  5. Android RecyclerView滑动监听,判断是否滑动到了最后一个item

    项目中的需求,RecyclerView横向滑动列表,要有加载更多的功能,给RecyclerView设置一个滑动监听,在onScrolled方法中判断一下滑动方向,然后在onScrollStateCha ...

  6. 移动端H5页面惯性滑动监听

    移动端H5页面惯性滑动监听 在移动端,当你快速滑动有滚动条的页面时,当你手指离开屏幕时,滚动条并不会立即停止,而是会随着"惯性"继续滑动一段距离. 在做项目的过程中,需要监听惯性滑 ...

  7. listview下拉刷新 上拉(滑动分页)加载更多

    最 近做的类似于微博的项目中,有个Android功能要使用到listview的向下拉刷新来刷新最新消息,向上拉刷新(滑动分页)来加载更多.新浪微博就是使用这种方式的典型.当用户从网络上读取微博的时候, ...

  8. ListView实现分页加载(一)制作Demo

    一.什么是分页加载 在下面的文章中,我们来讲解LitView分页加载的实现.什么是分页加载呢?我们先看几张效果图吧,如下:                                       ...

  9. Android基本控件之listView(三)<用ListView实现分页加载>

    我们之前讨论了ListView的基本使用方法和ListView的优化 今天我们再来讨论一个关于ListView的一个新的东西~就是分页加载.那么什么是分页加载呢?简单点说,就是"下拉刷新&q ...

随机推荐

  1. jQuery 学习小结

    1,jQuery是一个简单的JavaScript库,提供了一系列辅助函数:以下简称jq; 使用jq时,通常将jq代码放到head部分的事件处理方法中,也可以将其单独写出 .js 文件,引入:但无论哪种 ...

  2. error LNK2001:unresolved external symbol "xxx:static xxx"

    一般是在类的头文件里定义了某个static变量而没有在类的 Implemention 里去初始化(也许不是这么称呼)这个变量. 比如在 xxdlg.h 中写了如下代码 1: class CxxDlg ...

  3. ubuntu下打开chm文件

    CHM文件格式是微软1998年推出的基于HTML文件特性的帮助文件系统,以替代早先的WinHelp帮助系统,它在Windows 98中把CHM类型文件称作“已编译的HTML帮助文件”. chm文件因为 ...

  4. erlang分布式编程模型

    erlang分布式编程有两种模型 一.分布式erlang 运行在可信的网络环境中 1.rpc提供的远程过程调用 rpc:call(Node,Mode,Fun,Args) ->Result|{ba ...

  5. div盒子水平垂直居中的方法

    这个问题比较老,方法比较多,各有优劣,着情使用. 一.盒子没有固定的宽和高 方案1.Transforms 变形 这是最简单的方法,不仅能实现绝对居中同样的效果,也支持联合可变高度方式使用.内容块定义t ...

  6. C++ 使用string一行一行读取文件

    c++ 读取文件中的一行一行数据 通用模板: std::ifstream in(dictpath); if(!in) { std::cout << __DATE__ << &q ...

  7. 模仿QQ客户端和服务器(支持window和linux)

    界面部分我还没有想好,到底是用MFC还是duilib呢? 好吧我先发一个demo版本,功能都有,以下为功能展示. 先说服务器(这个有俩个版本,支持win和linux):用的数据库为MYsql(因为是便 ...

  8. 自定义控件之--组合控件(titlebar)

    自定义控件相关知识从郭霖等大神身上学习,这里只不过加上自己的理解和实践,绝非抄袭.   组合控件是自定义控件中最简单的方式,但是是入门自定义控件和进阶的过程: 那么常见的组合控件有那些? 比如titl ...

  9. 修改IP的方法(C#)

    1. wmi 代码以后补 需要获取全部IP后,统一添加(貌似会造成网络瞬断) 2. iphlpapi.lib 代码以后补 可以直接添加和删除IP 3. netsh 可以直接添加和删除IP

  10. URLEncode和URLDecoder作用

    一.基本原理 对于URL传递到后台,会对其中的有些字符进行编码,以下是我百度到的一些资料. 网页中的表单使用POST方法提交时,数据内容的类型是 application/x-www-form-urle ...