1、工程加入以下两个文件夹:(参考:https://github.com/jingchenUSTC/PullToRefreshAndLoad) (待会我会将demo打包上传)

2、这个demo只有一个activity,该activity就是显示一个支持上拉加载更多的gridview:

 package com.example.test_textview;

 import java.util.ArrayList;
import java.util.List; import com.jingchen.pulltorefresh.MyListener;
import com.jingchen.pulltorefresh.PullToRefreshLayout; import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.os.Handler;
import android.widget.GridView;
import android.widget.ListView; public class MainActivity extends Activity { public String tag = "MainActivity"; public static Context ctxt = null;
public static Handler handler = null; public GridView gridview = null;
public girdviewAdapter adapter = null;
public List<Integer> listGridview = null; public static int index = 0; public static final int UPDATE_GRIDVIEW_LOAD_MORE = 0; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); init(); widgetConfigure(); } public void init()
{
ctxt = getApplicationContext(); gridview = (GridView)findViewById(R.id.gridview_test); handler = new Handler()
{
public void handleMessage(android.os.Message msg)
{
switch(msg.what)
{
case UPDATE_GRIDVIEW_LOAD_MORE: index++;
for(int k=0;k<12;k++)
{
int t = 12*index+k;
listGridview.add(t);
}
               adapter.notifyDataSetChanged();
              gridview.smoothScrollToPosition(adapter.getCount());

                     break;
}
};
}; listGridview = new ArrayList<Integer>();
for(int k=0;k<12;k++)
{
listGridview.add(k);
}
adapter = new girdviewAdapter(listGridview,ctxt,handler); } public void widgetConfigure()
{
gridview.setAdapter(adapter); ((PullToRefreshLayout) findViewById(R.id.refresh_view)).setOnRefreshListener(new MyListener()); }
}

3、activity_main xml文件:

 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/Constrast_3"
android:orientation="vertical"
android:padding="20dp" > <com.jingchen.pulltorefresh.PullToRefreshLayout
android:id="@+id/refresh_view" <!-- 这个自定义布局,可以通过检测手势,判断是上拉还是下拉,然后将结果告诉listener-->
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_alignParentTop="true"
> <include layout="@layout/refresh_head" /> <!-- 这个是下拉刷新的头,引用的1中git的文件--> <com.jingchen.pulltorefresh.pullableview.PullableGridView
android:id="@+id/gridview_test"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:numColumns="4"
android:verticalSpacing="12dp"
android:horizontalSpacing="14dp"
android:gravity="center"
/> <include layout="@layout/load_more" /> <!-- 这个是上拉加载更多的尾部,引用的1中git的文件-->
  </com.jingchen.pulltorefresh.PullToRefreshLayout>   </LinearLayout>

3、refreshView通过检测手势,判断用户操作是上拉还是下拉,进而通过listener来进行相应的数据操作:

 package com.jingchen.pulltorefresh;

 import android.os.Handler;
import android.os.Message; import com.example.test_textview.MainActivity;
import com.jingchen.pulltorefresh.PullToRefreshLayout.OnRefreshListener; public class MyListener implements OnRefreshListener
{ @Override
public void onRefresh(final PullToRefreshLayout pullToRefreshLayout)
{ pullToRefreshLayout.refreshFinish(PullToRefreshLayout.SUCCEED); /* // 下拉刷新操作
new Handler()
{
@Override
public void handleMessage(Message msg)
{
// 千万别忘了告诉控件刷新完毕了哦!
pullToRefreshLayout.refreshFinish(PullToRefreshLayout.SUCCEED);
}
}.sendEmptyMessageDelayed(0, 5000);*/
} @Override
public void onLoadMore(final PullToRefreshLayout pullToRefreshLayout)
{ // 加载操作
new Handler()
{
@Override
public void handleMessage(Message ms1g)
{
// 千万别忘了告诉控件加载完毕了哦!
pullToRefreshLayout.loadmoreFinish(PullToRefreshLayout.SUCCEED); Message msg = new Message();
msg.what = MainActivity.UPDATE_GRIDVIEW_LOAD_MORE;
MainActivity.handler.sendMessage(msg);
}
}.sendEmptyMessageDelayed(0, 5000); } }

需要看demo整个工程的请跳转:http://pan.baidu.com/s/1hqjci6w

44、gridview实现下拉刷新、上拉加载更多(最简单实现上下拉操作的开源工程!)的更多相关文章

  1. SwipeRefreshLayout实现下拉刷新上滑加载

    1. 效果图 2.RefreshLayout.java package myapplication.com.myapplication; import android.content.Context; ...

  2. Android 下拉刷新上啦加载SmartRefreshLayout + RecyclerView

    在弄android刷新的时候,可算是耗费了一番功夫,最后发觉有现成的控件,并且非常好用,这里记录一下. 原文是 https://blog.csdn.net/huangxin112/article/de ...

  3. juery下拉刷新,div加载更多元素并添加点击事件(二)

    buffer.append("<div class='col-xs-3 "+companyId+"' style='padding-left: 10px; padd ...

  4. Android如何定制一个下拉刷新,上滑加载更多的容器

    前言 下拉刷新和上滑加载更多,是一种比较常用的列表数据交互方式. android提供了原生的下拉刷新容器 SwipeRefreshLayout,可惜样式不能定制. 于是打算自己实现一个专用的.但是下拉 ...

  5. Android 自定义 ListView 上下拉动“刷新最新”和“加载更多”歌曲列表

    本文内容 环境 测试数据 项目结构 演示 参考资料 本文演示,上拉刷新最新的歌曲列表,和下拉加载更多的歌曲列表.所谓"刷新最新"和"加载更多"是指日期.演示代码 ...

  6. ListView上拉刷新和分页加载完整的Dome

    很多人工作的过程中都会碰到ListView下拉刷新和分页加载,然后大多数公司都已经把框架写好了,大家直接用就可以了,有些人一直对这个事情处于迷茫状态,为了让大家对上拉刷新和分页加载有一个比较全面的认识 ...

  7. jQuery WeUI 组件下拉刷新和滚动加载的实现

    最近在做手机版使用到了下拉刷新和滚动加载,记录一下实现过程: 一.引入文件 ? 1 2 3 4 <link rel="stylesheet" href="Conte ...

  8. vue 上滑加载更多

    移动端网页的上滑加载更多,其实就是滑动+分页的实现. <template> <div> <p class="footer-text">--{{f ...

  9. 第三方 XListview 上拉加载、下拉刷新、分页加载和Gson解析

    注意:此Demo用的是第三方的Xlistview.jar,需要复制me文件夹到项目中,两个XML布局文件和一张图片 把下面的复制到String中 <string name="xlist ...

  10. Android的ListView分页功能(上滑加载更多)

    今天主要工作是将之前实现的各种ListView显示全部信息,优化成了每次加载几条数据,然后上滑的时候加载更多,底部显示一个进度条和一个文字提示,然后加载完毕后,将提示信息隐藏. 一边看教学视频一遍敲代 ...

随机推荐

  1. jQuery事件绑定函数:on()与bind()的差别

    jQuery从1.7+版本开始,提供了on()和off()进行事件处理函数的绑定和取消.on()和bind()这两个方法有相同的地方也有不同的地方. bind(type,[data],fn); on( ...

  2. SpringBoot的异步调用介绍

    参考博客: https://www.cnblogs.com/jebysun/p/9675345.html https://blog.csdn.net/weixin_38399962/article/d ...

  3. 比特币中P2SH(pay-to-script-hash)多重签名的锁定脚本和解锁脚本

    P2SH(pay-to-script-hash)多重签名的脚本 P2SH是多重签名的一种应用形式.在P2SH的交易中,多了一个Redeem Script的概念,称为赎回脚本.当向P2SH脚本的地址转账 ...

  4. Android(java)学习笔记102:Dalivk虚拟机的初始化过程

    1. 初始化下面系统函数(调用dvmStartup函数初始化所有相关的函数) 开始学习虚拟机的初始化过程,先从dvmStartup函数开始,这个函数实现所有开始虚拟机的准备工作:    dvmAllo ...

  5. python psutil 编译中断。 error: command 'gcc' failed with exit status 1

    error info [root@chenbj psutil-2.0.0]# python setup.py install running install running bdist_egg run ...

  6. Python 之私有属性

    概要 在基类的定义中,如果有些属性或者方法,我们希望隐藏它,从而不被子类继承,或者使其不被实例直接访问到,这时候可以用到私有属性的命名方法.尽管类的所有属性和方法在某种意义上说都是"暴露的& ...

  7. pyqt4 python2.7 中文乱码的解决方法

    import sysimport localefrom PyQt4.QtGui import *from PyQt4.QtCore import *from untitled import Ui_Di ...

  8. Luogu P1471 方差

    题目传送门 开了十倍空间才过是什么鬼?该不会我线段树炸了吧-- 细思极恐 平均数都会求,维护区间和,到时候除一下就好了. 方差的求法如下 (用的Luogu的图片) 因为要维护一个平方,我们可以考虑使用 ...

  9. CUDA:Supercomputing for the Masses (用于大量数据的超级计算)-第九节

    原文链接 第九节:使用CUDA拓展高等级语言 Rob Farber 是西北太平洋国家实验室(Pacific Northwest National Laboratory)的高级科研人员.他在多个国家级的 ...

  10. ASIHTTPRequest的使用

    本文转自csdn ASIHTTPRequest对CFNetwork API进行了封装,并且使用起来非常简单,用Objective-C编写,可以很好的应用在Mac OS X系统和iOS平台的应用程序中. ...