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

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

  1. package com.example.test_textview;
  2.  
  3. import java.util.ArrayList;
  4. import java.util.List;
  5.  
  6. import com.jingchen.pulltorefresh.MyListener;
  7. import com.jingchen.pulltorefresh.PullToRefreshLayout;
  8.  
  9. import android.app.Activity;
  10. import android.content.Context;
  11. import android.os.Bundle;
  12. import android.os.Handler;
  13. import android.widget.GridView;
  14. import android.widget.ListView;
  15.  
  16. public class MainActivity extends Activity {
  17.  
  18. public String tag = "MainActivity";
  19.  
  20. public static Context ctxt = null;
  21. public static Handler handler = null;
  22.  
  23. public GridView gridview = null;
  24. public girdviewAdapter adapter = null;
  25. public List<Integer> listGridview = null;
  26.  
  27. public static int index = 0;
  28.  
  29. public static final int UPDATE_GRIDVIEW_LOAD_MORE = 0;
  30.  
  31. @Override
  32. protected void onCreate(Bundle savedInstanceState) {
  33. super.onCreate(savedInstanceState);
  34.  
  35. setContentView(R.layout.activity_main);
  36.  
  37. init();
  38.  
  39. widgetConfigure();
  40.  
  41. }
  42.  
  43. public void init()
  44. {
  45. ctxt = getApplicationContext();
  46.  
  47. gridview = (GridView)findViewById(R.id.gridview_test);
  48.  
  49. handler = new Handler()
  50. {
  51. public void handleMessage(android.os.Message msg)
  52. {
  53. switch(msg.what)
  54. {
  55. case UPDATE_GRIDVIEW_LOAD_MORE:
  56.  
  57. index++;
  58. for(int k=0;k<12;k++)
  59. {
  60. int t = 12*index+k;
  61. listGridview.add(t);
    }
  1.               adapter.notifyDataSetChanged();
  1.               gridview.smoothScrollToPosition(adapter.getCount());
  2.  
  3. break;
  4. }
  5. };
  6. };
  7.  
  8. listGridview = new ArrayList<Integer>();
  9. for(int k=0;k<12;k++)
  10. {
  11. listGridview.add(k);
  12. }
  13. adapter = new girdviewAdapter(listGridview,ctxt,handler);
  14.  
  15. }
  16.  
  17. public void widgetConfigure()
  18. {
  19. gridview.setAdapter(adapter);
  20.  
  21. ((PullToRefreshLayout) findViewById(R.id.refresh_view)).setOnRefreshListener(new MyListener());
  22.  
  23. }
  24. }

3、activity_main xml文件:

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

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

  1. package com.jingchen.pulltorefresh;
  2.  
  3. import android.os.Handler;
  4. import android.os.Message;
  5.  
  6. import com.example.test_textview.MainActivity;
  7. import com.jingchen.pulltorefresh.PullToRefreshLayout.OnRefreshListener;
  8.  
  9. public class MyListener implements OnRefreshListener
  10. {
  11.  
  12. @Override
  13. public void onRefresh(final PullToRefreshLayout pullToRefreshLayout)
  14. {
  15.  
  16. pullToRefreshLayout.refreshFinish(PullToRefreshLayout.SUCCEED);
  17.  
  18. /* // 下拉刷新操作
  19. new Handler()
  20. {
  21. @Override
  22. public void handleMessage(Message msg)
  23. {
  24. // 千万别忘了告诉控件刷新完毕了哦!
  25. pullToRefreshLayout.refreshFinish(PullToRefreshLayout.SUCCEED);
  26. }
  27. }.sendEmptyMessageDelayed(0, 5000);*/
  28. }
  29.  
  30. @Override
  31. public void onLoadMore(final PullToRefreshLayout pullToRefreshLayout)
  32. {
  33.  
  34. // 加载操作
  35. new Handler()
  36. {
  37. @Override
  38. public void handleMessage(Message ms1g)
  39. {
  40. // 千万别忘了告诉控件加载完毕了哦!
  41. pullToRefreshLayout.loadmoreFinish(PullToRefreshLayout.SUCCEED);
  42.  
  43. Message msg = new Message();
  44. msg.what = MainActivity.UPDATE_GRIDVIEW_LOAD_MORE;
  45. MainActivity.handler.sendMessage(msg);
  46. }
  47. }.sendEmptyMessageDelayed(0, 5000);
  48.  
  49. }
  50.  
  51. }

需要看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. fstab 解析

    某些时候当Linux系统下划分了新的分区后,需要将这些分区设置为开机自动挂载,否则,Linux是无法使用新建的分区的. /etc/fstab 文件负责配置Linux开机时自动挂载的分区. Window ...

  2. 菜鸟 学注册机编写之 “sha1”

    1. 首先运行程序随便输入用户与注册码如下图所示: 2.将程序载入OD, 下MessageBoxA函数断点, F9运行程序, 程序运行后随便输入用户名与注册码,点"OK"后断下,F ...

  3. cms-帖子幻灯图片上传

    package com.open1111.controller.admin; import java.io.File;import java.util.Date;import java.util.Ha ...

  4. zip、rar压缩文件密码破解——使用ARCHPR Professional Edition

    直链下载地址: https://pan.abn.cc/weiyun/down.php?u=82441366e3c1f43fc69210e8ece93470.undefined.zip (压缩包内含解压 ...

  5. selenium显示等待解决浏览器未加载完成查找控件的问题

    问题描述:wap版支付成功后,跳转到支付成功页,查找的元素已出现,如图的:元素1,元素2,但是提示查找的元素超时,失败,并且每到这个页面都会报页面超时,不能查找到页面元素 原始代码: try{ op. ...

  6. python_图形界面编程示例

    "常用Tkinter组件的使用" #一.弹出消息框 #1 弹出提示消息框 from tkinter.messagebox import * showinfo(title='提示', ...

  7. Linux学习记录(三)

    1.Linux的软件安装 1.1.jdk安装 注意:rpm与软件相关命令 相当于window下的软件助手 管理软件 步骤: 1)查看当前Linux系统是否已经安装java 输入 rpm -qa | g ...

  8. 【算法】Fibonacci(斐波那契数列)相关问题

    一.列出Fibonacci数列的前N个数 using System; using System.Collections.Generic; using System.Linq; using System ...

  9. STL MAP使用注意事项

    Hat’s Words A hat’s word is a word in the dictionary that is the concatenation of exactly two other ...

  10. Q&A - ABTesting是啥?

    举个简单的例子,当你有一个日IP过千的网站,而你的网站首页几百年没有更改了,这个时候你想启用新的网页,而你有害怕新的页面用户不一定就非常喜欢,那么这个时候你就需要进行A/B测试了.测试的方法是将老页面 ...