精确监听ListView滑动到底部

main.xml如下:

<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >

    <ListView
        android:id="@+id/listView"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_centerInParent="true"
     />

</RelativeLayout>

listviewitem.mxl如下:

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

    <TextView
        android:id="@+id/textView"
        android:layout_width="fill_parent"
        android:gravity="center"
        android:layout_height="80dip"
     />

</RelativeLayout>

MainActivity如下:

import java.util.ArrayList;
import java.util.HashMap;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.AbsListView;
import android.widget.AbsListView.OnScrollListener;
import android.widget.ListView;
import android.widget.SimpleAdapter;

public class MainActivity extends Activity {
	private ListView mListView;
	private SimpleAdapter mSimpleAdapter;
	private HashMap<String, Object> mHashMap;
	private ArrayList<HashMap<String, Object>> mArrayList;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
		init();
	}
	private void init(){
		mListView=(ListView) findViewById(R.id.listView);
		mArrayList=new ArrayList<HashMap<String,Object>>();
		addDataForListView();
		mSimpleAdapter=new SimpleAdapter
	   (MainActivity.this, mArrayList, R.layout.listviewitem, new String []{"id"},new int []{R.id.textView});
		mListView.setAdapter(mSimpleAdapter);
		mListView.setOnScrollListener(new OnScrollListenerImple());

	}
	private void addDataForListView(){
		System.out.println("====>Add data to ListView");
		for (int i = 0; i < 10; i++) {
			mHashMap=new HashMap<String, Object>();
			mHashMap.put("id", ""+i);
			mArrayList.add(mHashMap);
		}
	}
	private class OnScrollListenerImple implements OnScrollListener{
		@Override
		public void onScroll(AbsListView listView, int firstVisibleItem,int visibleItemCount, int totalItemCount) {
			int lastItem = firstVisibleItem + visibleItemCount;
            if(lastItem == totalItemCount) {
            	System.out.println("Scroll to the listview last item");
            	View lastItemView=(View) listView.getChildAt(listView.getChildCount()-1);
            	if ((listView.getBottom())==lastItemView.getBottom()) {
					System.out.println("========Scroll to the listview bottom =============");
					addDataForListView();
					mSimpleAdapter.notifyDataSetChanged();
				}
            }
		}

		@Override
		public void onScrollStateChanged(AbsListView listview, int scrollState) {

		}

	}

}

 

时间: 2024-10-26 20:09:32

精确监听ListView滑动到底部的相关文章

精确监听AbsListView滚动至底部

用户使用android客户端时,当ListView滚动至底部,可以由一个按钮来提示用户是否读下一页,那么如果使用GridView呢?现在很多WEB 2.0上的体验就是当底部时自动读取下一页数据,GridView(ListView也可)可以采用这种方法.网上已经有很多文章介绍了如何判断ListView是否滚动至底部,原理是 AbsListView.getLastVisiblePosition() = (AbsListView.getCount() - 1) 即到底,如果往上拖一点,用户看起来已经离

Android监听WebView滑动到底部

MainActivity如下: package cn.testwebview; import android.app.Activity; import android.graphics.Bitmap; import android.os.Bundle; import android.webkit.WebSettings; import android.webkit.WebView; import android.webkit.WebViewClient; import cn.testwebvie

Android ListView监听上下滑动(判断是否显示返回顶部按钮)

在有些listview上面和ScrollView上,当滑动到底部的时候,在右下角会出现一个回到顶部的按钮,提供更好的用户体验. 效果图如下: 布局  先说布局,可以用帧布局Framelayout,也可以用相对布局relativelayout.看下listview的布局文件: <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://sche

监听ScrollView滑动到顶端和底部

MainActivity如下: package cn.testscrollview; import android.os.Bundle; import android.view.MotionEvent; import android.view.View; import android.view.View.OnTouchListener; import android.widget.ScrollView; import android.app.Activity; /** * Demo描述: * 监

android webview 滑动-监听webview滑动,并且禁止webview向下滑动

问题描述 监听webview滑动,并且禁止webview向下滑动 public void onSChanged(int l, int t, int oldl, int oldt) { if ((mBrowser.getAllHeight() * 0.1) - (mBrowser.getCurrenHeight()) <= 0) Log.d(log.getTag(), "到底了"); } } 当监听到webview滑动到整体HTML 10%的位置的时候,禁止继续向下滑动,只保持能后

checkbox-如何监听listview中CheckBox复选框并且进行实时控制

问题描述 如何监听listview中CheckBox复选框并且进行实时控制 如何监听listview中CheckBox复选框并且进行实时控制 解决方案 如果你用的是C#,listview有itemcheck事件 解决方案二: 用ItemCheck或者ItemChecked事件.区别是后者在之后发生. 解决方案三: http://blog.csdn.net/codeeer/article/details/6732040

Android中实现监听ScrollView滑动事件_Android

时候我们需要监听ScroView的滑动情况,比如滑动了多少距离,是否滑到布局的顶部或者底部.可惜的是SDK并没有相应的方法,不过倒是提供了一个 复制代码 代码如下: protected void onScrollChanged(int x, int y, int oldx, int oldy)  方法,显然这个方法是不能被外界调用的,因此就需要把它暴露出去,方便使用.解决方式就是写一个接口, 复制代码 代码如下: package com.example.demo1;    public inte

Android中实现监听ScrollView滑动事件

时候我们需要监听ScroView的滑动情况,比如滑动了多少距离,是否滑到布局的顶部或者底部.可惜的是SDK并没有相应的方法,不过倒是提供了一个 复制代码 代码如下: protected void onScrollChanged(int x, int y, int oldx, int oldy) 方法,显然这个方法是不能被外界调用的,因此就需要把它暴露出去,方便使用.解决方式就是写一个接口, 复制代码 代码如下: package com.example.demo1;    public inter

监听-listview item中是有EditText改变时获取Postion?

问题描述 listview item中是有EditText改变时获取Postion? listview item中是有EditText, 怎么在监听每个EditText的时候获取这个EditText的Postion? 解决方案 getview时,可以给这个edittext的tag赋值postion,然后取出tag得到postion 解决方案二: 不是本地爸爸的话大把大把差不多你都能 解决方案三: 用ListView 不要重用ConvertView