android中gridview的上拉加载更多
16lz
2021-01-26
先看效果图
上面效果图可以看到,gridview滑动到底部时,如果再次拉动可以加载下一页内容
下面是使用步骤
一,首先定义监听器,来监听gridview是否滑动到底部
package com.stickynavlistview.listenter;import android.view.View;import android.widget.AbsListView;import android.widget.AbsListView.OnScrollListener;import android.widget.Toast;/** * 滚动至列表底部,读取下一页数据 */public class AutoLoadListener implements OnScrollListener { public interface AutoLoadCallBack { void execute(); } private int getLastVisiblePosition = 0, lastVisiblePositionY = 0; private AutoLoadCallBack mCallback; public AutoLoadListener(AutoLoadCallBack callback) { this.mCallback = callback; } public void onScrollStateChanged(AbsListView view, int scrollState) { if (scrollState == OnScrollListener.SCROLL_STATE_IDLE) { //滚动到底部 if (view.getLastVisiblePosition() == (view.getCount() - 1)) { View v = (View) view.getChildAt(view.getChildCount() - 1); int[] location = new int[2]; v.getLocationOnScreen(location);//获取在整个屏幕内的绝对坐标 int y = location[1]; if (view.getLastVisiblePosition() != getLastVisiblePosition && lastVisiblePositionY != y)//第一次拖至底部 { Toast.makeText(view.getContext(), "已经拖动至底部,再次拖动即可翻页", Toast.LENGTH_SHORT).show(); getLastVisiblePosition = view.getLastVisiblePosition(); lastVisiblePositionY = y; return; } else if (view.getLastVisiblePosition() == getLastVisiblePosition && lastVisiblePositionY == y)//第二次拖至底部 { mCallback.execute(); } } //未滚动到底部,第二次拖至底部都初始化 getLastVisiblePosition = 0; lastVisiblePositionY = 0; } } public void onScroll(AbsListView arg0, int arg1, int arg2, int arg3) { }}
2,使用时只需要为gridview设置
@Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.fragment_tab, container, false); mListView = (GridView) view .findViewById(R.id.id_stickynavlayout_innerscrollview); // mTextView = (TextView) view.findViewById(R.id.id_info); // mTextView.setText(mTitle); AutoLoadListener autoLoadListener = new AutoLoadListener(callBack); mListView.setOnScrollListener(autoLoadListener); initPage(); return view; } AutoLoadListener.AutoLoadCallBack callBack = new AutoLoadListener.AutoLoadCallBack() { public void execute() { // Utils.showToast("已经拖动至底部"); loadSpareItems(currentPage + 1);//这段代码是用来请求下一页数据的 } };
github下载地址: https://github.com/qiushi123/StickyNavListview-pulltoGridView
更多相关文章
- android广告自动滚动并用picasso实现图片加载
- Android(安卓)露珠/水滴 拖拽 效果实现
- Android(安卓)UI开发第八篇——ViewFlipper 左右滑动效果
- 动手学Android之九——列表没那么简单
- 使用ScrollView实现滚动效果
- 2014.04.22 ——— android listview header和左右滑动冲突
- UltimateRecyclerView发布,Android下新Listview的大杀器
- Android(安卓)仿微信对话列表滑动删除效果
- Android(安卓)新控件学习