android 检测ListView滚动到的位置

ListView滚动

1.要用到一个监听事件是:setOnScrollListener();

API解释是:

Set the listener that will receive notifications every time the list scrolls.

Parameters:l the scroll listener

2.它里面包含了两个方法:
一个是:onScrollStateChanged(AbsListView view, int scrollState),用来表明ListView是什么状态(静止,滑动);
scrollState 为OnScrollListener.SCROLL_STATE_IDLE:表明ListView是在静止状态
      为OnScrollListener.SCROLL_STATE_TOUCH_SCROLL:表明在滑动且手指没有离开屏幕.
另外一个是:onScroll(AbsListView view, int firstVisibleItem,int visibleItemCount, int totalItemCount)在滚动的时候获得一些参数:
通过一个小例子来说明:
 1 public class MainActivity extends Activity {
 2     private ListView listView;
 3 
 4     @Override
 5     protected void onCreate(Bundle savedInstanceState) {
 6         super.onCreate(savedInstanceState);
 7         setContentView(R.layout.activity_main);
 8         listView = (ListView) findViewById(R.id.lsitView);
 9         List<String> list = new ArrayList<String>();
10         for (int i = 0; i < 20; i++) {
11             list.add("这是第" + i + "个");
12 
13         }
14         ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
15                 android.R.layout.simple_list_item_single_choice, list);
16         listView.setAdapter(adapter);
17         listView.setOnScrollListener(new ListView.OnScrollListener() {
18 
19             @Override
20             public void onScrollStateChanged(AbsListView view, int scrollState) {
21                 switch (scrollState) {
22 
23                 case OnScrollListener.SCROLL_STATE_IDLE: // 没有滚动的时候
24                     System.out.println("最后显示的listview的位置是--->>"
25                             + listView.getLastVisiblePosition());
26                     if (listView.getLastVisiblePosition() == (listView
27                             .getCount() - 1)) {
28                         Toast.makeText(MainActivity.this, "滑到listView底了",
29                                 Toast.LENGTH_SHORT).show();
30 
31                     }
32 
33                     if (listView.getFirstVisiblePosition() == 0) {
34                         Toast.makeText(MainActivity.this, "listView顶头了",
35                                 Toast.LENGTH_SHORT).show();
36                     }
37 
38                     break;
39 
40                 case OnScrollListener.SCROLL_STATE_FLING:
41                     System.out.println("SCROLL_STATE_FLING");
42                     break;
43 
44                 case OnScrollListener.SCROLL_STATE_TOUCH_SCROLL:
45                     System.out.println("SCROLL_STATE_TOUCH_SCROLL"
46                             + "能看到的最后一个显示的位置--->>"
47                             + listView.getLastVisiblePosition());
48                     break;
49                 default:
50 
51                     break;
52 
53                 }
54 
55             }
56 
57             /**
58              * view The view whose scroll state is being reported
59              * firstVisibleItem the index of the first visible cell (ignore if
60              * visibleItemCount == 0) visibleItemCount the number of visible
61              * cells totalItemCount the number of items in the list adaptor
62              */
63             @Override
64             public void onScroll(AbsListView view, int firstVisibleItem,
65                     int visibleItemCount, int totalItemCount) {
66 
67             }
68         });
69 
70     }
71 }

源码下载地址:
源码

posted @ 2014-07-25 01:08  perfect亮  阅读(3627)  评论(0编辑  收藏  举报