Android(安卓)OnScrollListener
16lz
2021-01-26
- getListView().setOnScrollListener(onScrollListener);
- AbsListView.OnScrollListeneronScrollListener=newAbsListView.OnScrollListener(){
- booleanflag=false;
- @Override
- publicvoidonScrollStateChanged(AbsListViewabsListView,intscrollState){
- if(scrollState==AbsListView.OnScrollListener.SCROLL_STATE_TOUCH_SCROLL){//触屏滑动中
- if(flag){
- LinearLayoutlinearLayout=(LinearLayout)Checkin_context.findViewById(R.id.loadcheckin);
- if(linearLayout.getVisibility()==View.GONE&&linearLayout!=null){
- linearLayout.setVisibility(View.VISIBLE);
- }
- getData(false);
- }
- }
- }
- @Override
- publicvoidonScroll(AbsListViewabsListView,intfirstVisibleItem,intvisibleItemCount,inttotalItemCount){
- Log.v(TAG,firstVisibleItem+","+visibleItemCount+","+totalItemCount+"|"+getListView().getFirstVisiblePosition()+","+getListView().getLastVisiblePosition());
- if(firstVisibleItem+visibleItemCount==totalItemCount&&!flag){
- flag=true;
- }else
- flag=false;
- }
- };
getListView().setOnScrollListener(onScrollListener); AbsListView.OnScrollListener onScrollListener = new AbsListView.OnScrollListener() { boolean flag = false; @Override public void onScrollStateChanged(AbsListView absListView, int scrollState) { if (scrollState == AbsListView.OnScrollListener.SCROLL_STATE_TOUCH_SCROLL) { //触屏滑动中 if (flag) { LinearLayout linearLayout = (LinearLayout) Checkin_context.findViewById(R.id.loadcheckin); if (linearLayout.getVisibility() == View.GONE && linearLayout != null) { linearLayout.setVisibility(View.VISIBLE); } getData(false); } } } @Override public void onScroll(AbsListView absListView, int firstVisibleItem, int visibleItemCount, int totalItemCount) { Log.v(TAG,firstVisibleItem+","+visibleItemCount+","+totalItemCount+"|"+getListView().getFirstVisiblePosition()+","+getListView().getLastVisiblePosition()); if (firstVisibleItem + visibleItemCount == totalItemCount && !flag) { flag = true; } else flag = false; } };
因为我是直接extends ListActivity,在ListActivity中本身自带了一个Listview,所以可以直接getlistview
唯一要讲的就是在 OnScroll中firstVisibleItem + visibleItemCount == totalItemCount
firstVisibleItem :表示在屏幕中第一条显示的数据在adapter中的位置,visibleItemCount 则是屏幕中最后一条数据在adapter中的数据,totalItemCount则是adapter中的总条数!
adapter(适配器)我们把其看做是一个list集合,可以在其中add很多的数据!而在屏幕中显示的数据,
只是这个集合中的一部分!firstVisibleItem +visibleItemCount = 这个集合总条数(list.size())
以此判断动态加载数据!
更多相关文章
- 一句话锁定MySQL数据占用元凶
- android自定义适配屏幕的ImageView
- 怎样实现android http-post方法
- android 从媒体库去数据
- 购物车
- Android(安卓)socket通信app Client端
- HttpURLconnection上传数据
- Android(安卓)封装的数据库管理操作类
- android 蓝牙发送数据