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

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

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

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

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的文件-->
28 29 </com.jingchen.pulltorefresh.PullToRefreshLayout> 30 31 </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         // 加载操作
36         new Handler()
37         {
38             @Override
39             public void handleMessage(Message ms1g)
40             {
41                 // 千万别忘了告诉控件加载完毕了哦!
42                 pullToRefreshLayout.loadmoreFinish(PullToRefreshLayout.SUCCEED);
43
44                 Message msg = new Message();
45                 msg.what = MainActivity.UPDATE_GRIDVIEW_LOAD_MORE;
46                 MainActivity.handler.sendMessage(msg);
47             }
48         }.sendEmptyMessageDelayed(0, 5000);
49
50     }
51
52 }

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

时间: 2024-10-11 20:28:57

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

十分钟实现ListView下拉刷新上滑加载更多

说到ListView下拉刷新几乎每个APP都会用到,所以ListView下拉刷新是很重要的,就像ListView优化一样是你必会的东西. ListView实现下拉刷新如果我们开发人员自己编写相对来说比较费事的,当我们使用第三方库之后我们再来开发这个功能就会省事很多.相比与自己实现可以少编写不少代码,Android-PullToRefresh库可以轻松实现ListView的下拉刷新功能. 要使用Android—PullToRefesh库对ListView实现下拉刷新要经过以下几个步骤: 1.下载A

最新Android ListView 下拉刷新 上滑加载

开发项目过程中基本都会用到listView的下拉刷新和上滑加载更多,之前大家最常用的应该是pull to refresh或它的变种版吧,google官方在最新的android.support.v4包中增加了一个新类SwipeRefreshLayout,地址 这个类的作用就是提供官方的下拉刷新,并且效果相当不错,而上拉加载更多则用我们自定义的listview,也是相当简单. 下拉刷新 简单的介绍下: 首先它是一个viewgroup,但是它只允许有一个子控件,子控件能是任何view,使用的时候,所在

IOS学习之UiTableView下拉刷新与自动加载更多,百年不变的效果

IOS学习之UiTableView下拉刷新与自动加载更多,百年不变的效果(五) 五一劳动节马上来临,小伙伴有妹有很激动哟,首先祝天下所有的程序猿节日快乐!这个五一对于我来说有点不一样,我的人生从这个五一就转弯了,爱情长跑8年的我结婚了,一会支付宝账号我会公布出去,请自觉打款!谢谢合作. 灯光闪起来: 舞蹈跳起来: 歌曲唱起来: -------------------------------------------------------------------------------------

Android下拉刷新库,利用viewdraghelper实现,集成了下拉刷新,底部加载更多,数据初始加载显示loading等功能

项目Github地址:https://github.com/sddyljsx/pulltorefresh Android下拉刷新库,利用viewdraghelper实现. 集成了下拉刷新,底部加载更多,以及刚进入加载数据的loadview.包括了listview与gridview的改写. 效果1: 效果2: 效果3: 效果4: 效果5: 使用说明: imageList=(ListView)findViewById(R.id.image_list); imageAdapter=new ImageA

Android ListView 下拉刷新 点击加载更多

最近项目中用到了ListView的下拉刷新的功能,总结了一下前辈们的代码,单独抽取出来写了一个demo作为示例. 效果图 下拉刷新: 加载更多: CustomListView.java [java] view plaincopy package com.example.uitest.view; import java.util.Date; import com.example.uitest.R; import android.content.Context; import android.uti

支持下拉刷新和上划加载更多的自定义RecyclerView(仿XListView效果)

首先看效果 下拉刷新:        上划加载        在项目更新的过程中,遇到了一个将XListView换成recyclerView的需求,而且更换完之后大体效果不能变,但是对于下拉刷新这样的效果,谷歌给出的解决方案是把RecyclerView放在一个SwipeRefreshLayout中,但是这样其实是拉下一个小圆形控件实现的,和XListView的header效果不同.在网上找了很多的别人代码,都没有实现我想要的效果,于是自己动手写了一个. 具体实现的效果有以下几条 下拉刷新功能:

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

在弄android刷新的时候,可算是耗费了一番功夫,最后发觉有现成的控件,并且非常好用,这里记录一下. 原文是 https://blog.csdn.net/huangxin112/article/details/78781682 ,这里是看了之后,结合自己实际遇到的问题写的. 首先引入包. //下拉框 implementation 'com.android.support:recyclerview-v7:28.0.0-beta01' implementation 'com.scwang.smar

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

前言 下拉刷新和上滑加载更多,是一种比较常用的列表数据交互方式. android提供了原生的下拉刷新容器 SwipeRefreshLayout,可惜样式不能定制. 于是打算自己实现一个专用的.但是下拉刷新和上滑,非常考验对android布局与父子触摸机制的功底,因此参考gitHub上的一个热门的下拉刷新项目 之所以选择他是因为它一个类就完成了所有View的适配,非常的精简强力. 需求 咱对下拉刷新.上滑加载更多的控件,需求如下: 1:下拉刷新,拖动到一定距离,提示文字变成 放手刷新 2:刷新完成

Android 自定义 ListView 上下拉动&ldquo;刷新最新&rdquo;和&ldquo;加载更多&rdquo;歌曲列表

本文内容 环境 测试数据 项目结构 演示 参考资料 本文演示,上拉刷新最新的歌曲列表,和下拉加载更多的歌曲列表.所谓"刷新最新"和"加载更多"是指日期.演示代码太多,点击此处下载,自己调试一下. 下载 Demo 环境 Windows 2008 R2 64 位 Eclipse ADT V22.6.2,Android 4.4.3 SAMSUNG GT-I9008L,Android OS 2.2.2 测试数据 本演示的歌曲信息,共有 20 条,包括歌手名.歌曲名.时长.缩

使用jquery.more.js上滑加载更多

html: <div id="more"> <div class="single_item"> <div class="date"></div> <div class="author"></div> <div class="title"></div> </div> <a href="j