Listview的OnScrollListener的滑动监听实现分页加载
//---------------主布局文件----------------------------
<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的滑动监听实现分页加载的更多相关文章
- 纯JS监听document是否加载完成
欢迎加入前端交流群交流知识&&获取视频资料:749539640 概述 一个document 的 Document.readyState 属性描述了文档的加载状态. 一个文档的 read ...
- ListView实现分页加载(三)实现分页加载
在上一篇中,我们实现了底部布局(即带上了进度条).没有读过的朋友可以点击下面的链接: http://www.cnblogs.com/fuly550871915/p/4866966.html 但是进度条 ...
- 使用swipecard实现卡片视图左右滑动监听以及点击监听
前言: 大家好,今天给大家介绍安卓一种特别实用有很酷炫的组件swipecard,当然这并不是安卓爸爸创造的,这是国内的一个我认为是大牛的一个人随便写着玩儿搞出来了,我看了他的代码介绍已经很清晰了,但 ...
- Android 自定义ScrollView的滑动监听事件
项目结构: 1.LazyScrollView类(自定义ScrollView) package android.zhh.com.myapplicationscrollview; /** * Create ...
- Android RecyclerView滑动监听,判断是否滑动到了最后一个item
项目中的需求,RecyclerView横向滑动列表,要有加载更多的功能,给RecyclerView设置一个滑动监听,在onScrolled方法中判断一下滑动方向,然后在onScrollStateCha ...
- 移动端H5页面惯性滑动监听
移动端H5页面惯性滑动监听 在移动端,当你快速滑动有滚动条的页面时,当你手指离开屏幕时,滚动条并不会立即停止,而是会随着"惯性"继续滑动一段距离. 在做项目的过程中,需要监听惯性滑 ...
- listview下拉刷新 上拉(滑动分页)加载更多
最 近做的类似于微博的项目中,有个Android功能要使用到listview的向下拉刷新来刷新最新消息,向上拉刷新(滑动分页)来加载更多.新浪微博就是使用这种方式的典型.当用户从网络上读取微博的时候, ...
- ListView实现分页加载(一)制作Demo
一.什么是分页加载 在下面的文章中,我们来讲解LitView分页加载的实现.什么是分页加载呢?我们先看几张效果图吧,如下: ...
- Android基本控件之listView(三)<用ListView实现分页加载>
我们之前讨论了ListView的基本使用方法和ListView的优化 今天我们再来讨论一个关于ListView的一个新的东西~就是分页加载.那么什么是分页加载呢?简单点说,就是"下拉刷新&q ...
随机推荐
- 核心梳理——消息处理的骨架流程——ESFramework 4.0 进阶(02)
在ESFramework 4.0 概述一文中,我们提到ESFramework.dll作为通信框架的核心,定义了消息处理的骨架流程,本文我们来详细剖析这个流程以及该骨架中所涉及的各个组件.ESFrame ...
- LeetCode OJ 73. Set Matrix Zeroes
Given a m x n matrix, if an element is 0, set its entire row and column to 0. Do it in place. click ...
- Openjudge-计算概论(A)-求出e的值
描述: 利用公式e = 1 + 1/1! + 1/2! + 1/3! + ... + 1/n! 求e .输入输入只有一行,该行包含一个整数n(2<=n<=15),表示计算e时累加到1/n! ...
- ubuntu12.04安装openjdk-7
编译androidL需要使用openjdk-7:使用sudo apt-get install openjdk-7-jdk会出现错误信息. 网上差了一些方法,可以通过更新软件源的方法解决,这里使用了 # ...
- 关于MTK平台CC相关的Log查询
关于MTK平台CC相关的Log查询 在外场问题中,经常会出现通话相关的故障.这里简单总结一下通话相关log的分析点: 主叫方:主叫方,是指主动发起通话的一方. 初步定位问题, 用户发起通话时,AP端的 ...
- yii2 windows 安装
Yii是一个高性能的,适用于开发WEB2.0应用的PHP框架. Yii自带了丰富的功能 ,包括MVC,DAO/ActiveRecord,I18N/L10N,缓存,身份验证和基于角色的访问控制,脚手架, ...
- 多工段查询存放到DataTable到List<DataTable>集合在C#里面做汇总
private void btnQuery_Click(object sender, EventArgs e) { if (cboxFactory.Text=="") { Mess ...
- linux命令积累(Ubuntu)
1.查看IP地址 ifconfig 2.退出more 使用ctrl+c 3.vi编辑,删除一行为dd 4.ubuntu安装tftp服务器:http://www.cnblogs.com/geneil/a ...
- Eclipse的WorkingSet使用(转载)
Eclipse作为一款流行的JavaIDE开发工具,其有很多好用的功能为我们的开发提供帮助.但我们的工作空间中有很多项目时,管理起来就很头疼了. 但是我们又不想更换工作区间,所以我们需要一个更加有效的 ...
- form异步无刷新提交,提交后可以显示弹出框,否则弹出框会被刷新不见,使用 preventDefault
出错点:确认按钮上.加onclick事件.每次点击都会追加给form追加on监听方法.累加on方法,重复提交 suppress_exception:true 阻止异常 (百度推送 jdk) 向下按 p ...