您的位置:首页 > 移动开发 > Android开发

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();

}

中间只是贴出来了关键的代码,其实从整个来看,并没有什么难的技术点,就是一个完美的转换来做的。下面贴出效果图:



内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: