Android中GridView滚动到底部加载数据
2015-07-06 14:46
399 查看
今天就关于用GridView控件来实现滚动到底部加载更多数据一个效果实现的技术讲解:
1、ScrollView中嵌套GridView布局
2、ScrollView滚动到底部监听
3、数据加载,刷新适配器
布局样式:
[java] view
plaincopy
<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监听滚动到底部:
[java] view
plaincopy
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是加载更多效果体验,它的显隐藏来模拟加载数据过程。
加载更多数据:
[java] view
plaincopy
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();
}
中间只是贴出来了关键的代码,其实从整个来看,并没有什么难的技术点,就是一个完美的转换来做的。下面贴出效果图:
1、ScrollView中嵌套GridView布局
2、ScrollView滚动到底部监听
3、数据加载,刷新适配器
布局样式:
[java] view
plaincopy
<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监听滚动到底部:
[java] view
plaincopy
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是加载更多效果体验,它的显隐藏来模拟加载数据过程。
加载更多数据:
[java] view
plaincopy
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 -----listView的重要属性
- android NDK开发未包含javah生成的头文件导致程序运行失败问题
- android ImageView 宽度设定,高度自适应
- android window 属性
- MTP in Android
- android crash 日志保存
- android 5.0 support
- Android源码之DeskClock (一)
- android 删除SD卡或手机的缓存图像和文件夹
- Android studio 快捷键
- Android仿QQ中的“我的空间”做出ScrollView滑动修改标题栏颜色操作
- Android Studio使用备忘
- 分享45个android实例源码
- android 开发框架
- 使用Kotlin开发Android应用(II):创建新工程
- Android 自定义控件初级 多层按钮旋转控件
- Android动态加载(插件化)基本原理总结
- 使用Kotlin开发Android应用(I):简介
- Kotlin在Android工程中的应用
- 学习android编程之路(1)— 环境变量配置