layout.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity" > <ListView
android:id="@+id/listView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
></ListView> </RelativeLayout>

listview_item_name.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" >
<TextView
android:id="@+id/tv_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="20sp"/> </LinearLayout>

main.java

package com.example.day09_listview_scrolllistener;

import java.util.ArrayList;
import java.util.List; import android.os.Bundle;
import android.app.Activity;
import android.util.Log;
import android.view.Menu;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AbsListView;
import android.widget.AbsListView.OnScrollListener;
import android.widget.BaseAdapter;
import android.widget.ListView;
import android.widget.TextView; public class MainActivity extends Activity { protected static final String TAG = "MainActivity";
private ListView listView;
private List<String> data;
private boolean isBottom = false;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
listView = (ListView) findViewById(R.id.listView);
data = getData();
MyAdapter myAdapter = new MyAdapter();
//设置适配器
listView.setAdapter(myAdapter);
//设置滚动监听
listView.setOnScrollListener(new OnScrollListener() {
/**
* 当滚动状态改变的时候调用
* AbsListView view, listView的父类
* int scrollState 滚动状态
*/
@Override
public void onScrollStateChanged(AbsListView view, int scrollState) {
// SCROLL_STATE_FLING 表示惯性滑动--2
// SCROLL_STATE_IDLE 表示停止滑动--0
// SCROLL_STATE_TOUCH_SCROLL 表示正在滑动--1
// Log.i(TAG, "onScrollStateChanged----scrollState"+scrollState);
//1.滑动到屏幕最底部2.停止滚动
if(scrollState == OnScrollListener.SCROLL_STATE_IDLE && isBottom ==true){
Log.i(TAG, isBottom+""); }
}
/**
* 当listView滚动的时候调用,第一次加载时也会调用
* int firstVisibleItem, 表示当前屏幕显示的第一条数据索引
* int visibleItemCount, 表示当前屏幕显示的总数量
* int totalItemCount 表示的是数据的总数量
*/
@Override
public void onScroll(AbsListView view, int firstVisibleItem,
int visibleItemCount, int totalItemCount) {
Log.i(TAG, "onScroll----firstVisibleItem-"+firstVisibleItem+"---visibleItemCount-"+visibleItemCount+"---totalItemCount"+totalItemCount);
isBottom = (firstVisibleItem + visibleItemCount == totalItemCount);
}
});
}
private List<String> getData(){
List<String> list = new ArrayList<String>();
for (int i = 0; i < 100; i++) {
list.add("杭州----"+i);
}
return list; }
class MyAdapter extends BaseAdapter{ @Override
public int getCount() {
return data.size();
} @Override
public Object getItem(int position) {
return data.get(position);
} @Override
public long getItemId(int position) {
return position;
} @Override
public View getView(int position, View convertView, ViewGroup parent) {
View view = convertView;
ViewHolder viewHolder;
if(view == null){
view = View.inflate(MainActivity.this, R.layout.listview_item_name,null);
viewHolder = new ViewHolder();
viewHolder.name = (TextView)view.findViewById(R.id.tv_name);
view.setTag(viewHolder);
}else{
viewHolder = (ViewHolder) view.getTag();
}
viewHolder.name.setText(data.get(position));
return view;
} }
class ViewHolder{
private TextView name;
} }

Android_listview_scrollListener的更多相关文章

随机推荐

  1. volatile之一--volatile不能保证原子性

    Java语言是支持多线程的,为了解决线程并发的问题,在语言内部引入了 同步块 和 volatile 关键字机制在java线程并发处理中,有一个关键字volatile的使用目前存在很大的混淆,以为使用这 ...

  2. 《深入Java虚拟机学习笔记》- 第7章 类型的生命周期/对象在JVM中的生命周期

    一.类型生命周期的开始 如图所示 初始化时机 所有Java虚拟机实现必须在每个类或接口首次主动使用时初始化: 以下几种情形符合主动使用的要求: 当创建某个类的新实例时(或者通过在字节码中执行new指令 ...

  3. 《Python基础教程(第二版)》学习笔记 -> 第二章 列表和元组

    本章将引入一个新的概念:数据结构. 数据结构是通过某种方式阻止在一起的数据元素的集合,这些数据元素可以是数字或者字符,设置可以是其他数据结构. Python中,最基本的数据结构是序列(Sequence ...

  4. ASP.NET_验证控件(class0620)

    为什么使用验证控件 当需要让用户输入数据时,用户有可能输入不符合我们程序逻辑要求的信息,所以我们要对输入进行验证. 客户端验证(用户体验,减少服务器端压力) 服务器端验证(防止恶意攻击,客户端js很容 ...

  5. javascript设计模式4

    静态成员是直接通过类对象访问的 var Book=(function(){ var numOfBooks=0; function checkIsbn(isbn){ ... } return funct ...

  6. 查看本机IP地址及子网掩码(netmask)

    通常有两种方式来查看本机IP地址及子网掩码,一种是在网路和共享中心中查看网路信息:一种是在cmd命令窗口查看. 下面分别介绍这两种方法: 1.在网路和共享中心中查看本机IP地址及子网掩码 (1)打开控 ...

  7. 【OpenGL】入门

    根据OpenGL蓝宝书(OpenGL超级宝典)来入门,写的比较细,易懂,这里给我贴代码和记录零碎的事儿用 第一个代码 #include <gl/glut.h> void RenderSce ...

  8. OpenCV中的矩阵乘法运算

    转载:http://blog.csdn.net/tangwei2014 OpenCV中矩阵乘法运算 1. Mat*Mat: 第一个矩阵的列数必须等于第二个矩阵的行数. [0, 1, 2, 3;     ...

  9. [Spice-devel] usbredir for Windows Client

    Hello, I have been scouring the internet for information on how to do this. I've successfully instal ...

  10. 写一个函数reverseList,该函数能够接受一个List,然后把该List 倒序排列。 例如:  List list = new ArrayList();  list.add(“Hello”);  list.add(“World”);  list.add(“Learn”); //此时list 为Hello World Learn  reverseList

    package homework004; import java.util.ArrayList; import java.util.List; public class Daoxu { public ...