Android中GridView滚动到底部加载数据终极版
2013-07-06 18:18
369 查看
之前在项目中有一个需求是需要GridView控件,滚动到底部自动加载。但是呢GridView控件并不提供诸如ListView监听滚动到底部的onScrollListener方法,为了实现这样一个效果,用ListView实现了,但是控件的Item子项书写过于复杂,前前后后的出了好多次的Bug,而且还需要对数据进行特殊处理,用ListView实现了诸如GridView的效果并有滚动到底部加载更多的数据,但是过于复杂的结构及数据有点得不偿失。
博客地址:http://blog.csdn.net/ALoveBtoC今天就关于用GridView控件来实现滚动到底部加载更多数据一个效果实现的技术讲解:
1、ScrollView中嵌套GridView布局
2、ScrollView滚动到底部监听
3、数据加载,刷新适配器
布局样式:
<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" tools:context=".MainActivity" android:background="@android:color/white" > <ScrollView android:id="@+id/MainGridViewScroll" android:layout_width="fill_parent" android:layout_height="wrap_content" android:fadingEdge="none" android:fillViewport="true" android:scrollbars="none" > <LinearLayout android:id="@+id/MainGridViewScrollLinear" android:layout_width="fill_parent" android:layout_height="wrap_content" android:gravity="left|top" android:orientation="vertical" > <com.sixsix.swordsman.grid.MyGridView android:id="@+id/MainGridViewGrid" android:layout_width="fill_parent" android:layout_height="wrap_content" android:fadingEdge="none" android:horizontalSpacing="5dp" android:listSelector="#00000000" android:numColumns="2" android:padding="5dp" android:scrollbars="none" android:verticalSpacing="5dp" /> <RelativeLayout android:layout_width="fill_parent" android:layout_height="wrap_content" > <TextView android:layout_width="fill_parent" android:layout_height="50dp" android:background="#00000000" /> <LinearLayout android:id="@+id/MainGridViewFooterLinear" android:layout_width="fill_parent" android:layout_height="50dp" android:gravity="center" android:orientation="horizontal" android:padding="10dp" > <com.ant.liao.GifView android:id="@+id/MainGridViewFooterGif" android:layout_width="wrap_content" android:layout_height="wrap_content" android:enabled="false" /> <TextView android:layout_width="wrap_content" android:layout_height="fill_parent" android:layout_marginLeft="5dp" android:gravity="center_vertical" android:text="正在加载..." android:textColor="@android:color/black" android:textSize="18sp" /> </LinearLayout> </RelativeLayout> </LinearLayout> </ScrollView> </RelativeLayout>
注:MyGridView是一个兼容ScrollView的GridView,百度
ScrollView监听滚动到底部:
sv.setOnTouchListener(new OnTouchListener() { private int lastY = 0; @Override public boolean onTouch(View v, MotionEvent event) { if(event.getAction() == MotionEvent.ACTION_UP){ lastY = sv.getScrollY(); if(lastY == (ll.getHeight() - sv.getHeight())){ LLF.setVisibility(View.VISIBLE); addMoreData(); } } return false; } });
注:LLF是加载更多效果体验,它的显隐藏来模拟加载数据过程。
加载更多数据:
private void addMoreData(){ new Thread(new Runnable(){ @Override public void run() { Bundle b = new Bundle(); try{ Thread.sleep(2000); b.putBoolean("addMoreData", true); }catch(Exception e){}finally{ Message msg = handler.obtainMessage(); msg.setData(b); handler.sendMessage(msg); } }}).start(); }
中间只是贴出来了关键的代码,其实从整个来看,并没有什么难的技术点,就是一个完美的转换来做的。下面贴出效果图:
相关文章推荐
- Android中GridView滚动到底部加载数据终极版
- Android中GridView滚动到底部加载数据终极版
- Android中GridView滚动到底部加载数据
- Android 实现ListView滚动到底部自动加载数据
- Android GridView横向滚动,分页加载数据
- 移动端滚动加载数据判断是否滚动到页面底部
- pc端页面滚动到底部加载更多数据......
- GridView设置自动滚动到列表底部导致第一条数据不显示问题处理
- 原生javascript移动端滚动到底部加载更多数据效果代码
- js页面滚动到底部时自动加载下一页数据
- android ListView监听滚动条滚动到底部时继续加载
- 滑轮滚动到页面底部ajax加载数据的实例
- Android Demo之旅 ListView底部添加加载更多按钮实现数据分页
- 7、Android数据分批加载-滑动到底部自动加载列表
- Android之ListView滚动到底后自动加载数据
- android中listview滑动到底部自动加载数据后它的滑块自动回到第一项怎么解决?
- Android第二十三期 - 256k的ListView下拉刷新和滚动加载数据
- 基于javascript实现浏览器滚动条快到底部时自动加载数据
- Android数据分批加载-滑动到底部自动加载列表
- js 下拉底部加载|滑轮滚动到页面底部ajax加载数据的实例