PullToRefreshGridView上拉刷新,下拉加载

PullToRefreshGridView上拉刷新,下拉加载

布局:

 1 <?xml version="1.0" encoding="utf-8"?>
 2 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
 3     xmlns:tools="http://schemas.android.com/tools"
 4     android:id="@+id/activity_main"
 5     android:layout_width="match_parent"
 6     android:layout_height="match_parent"
 7     tools:context="com.example.asus.pull_1.Activity.MainActivity">
 8
 9    <com.handmark.pulltorefresh.library.PullToRefreshGridView
10        android:id="@+id/gridview"
11        android:layout_width="match_parent"
12        android:layout_height="match_parent">
13
14    </com.handmark.pulltorefresh.library.PullToRefreshGridView>
15 </RelativeLayout>

Activity:

 1 public class MainActivity extends AppCompatActivity {
 2
 3     @BindView(R.id.gridview)
 4     PullToRefreshGridView gridview;
 5     private int index=1;
 6     private ArrayList<Bean.DataBean> list;
 7     private AdapterListe adapterListe;
 8     private Retrofit builder;
 9
10     @Override
11     protected void onCreate(Bundle savedInstanceState) {
12         super.onCreate(savedInstanceState);
13         setContentView(R.layout.activity_main);
14         ButterKnife.bind(this);
15         gridview.setMode(PullToRefreshBase.Mode.BOTH);//能下拉刷新和上拉加载  
16         init();
17     }
18
19     private void init() {
20         list = new ArrayList();
21         adapterListe = new AdapterListe(list, MainActivity.this);//适配器
22         gridview.setAdapter(adapterListe);
23         loadData(index);
24         gridview.setOnRefreshListener(new PullToRefreshBase.OnRefreshListener2<GridView>() {
25            //刷新
26             @Override
27             public void onPullDownToRefresh(PullToRefreshBase<GridView> refreshView) {
28                  list.clear();
29                 loadData(1);
30                 gridview.postDelayed(new Runnable() {
31                     @Override
32                     public void run() {
33                         gridview.onRefreshComplete();//加载完成后,设置刷新完成
34                     }
35                 },1000);
36             }
37             //加载
38             @Override
39             public void onPullUpToRefresh(PullToRefreshBase<GridView> refreshView) {
40                 index++;
41                 list.clear();
42                 loadData(index);
43                 gridview.postDelayed(new Runnable() {
44                     @Override
45                     public void run() {
46                         gridview.onRefreshComplete();//加载完成后,设置刷新完成
47                     }
48                 },1000);
49             }
50         });
51
52     }
53
54     private void loadData(int index) {
55       //解析
56         builder = new Retrofit.Builder()
57                 .baseUrl("http://www.qubaobei.com/")
58                 .addConverterFactory(GsonConverterFactory.create())
59                 .build();
60         builder.create(HttpCall.class).getHttpCall(""+index).enqueue(new Callback<Bean>() {
61             @Override
62             public void onResponse(Call<Bean> call, Response<Bean> response) {
63                 list.addAll(response.body().getData());//把获取到的数据放到集合里
64                 adapterListe.notifyDataSetChanged();//加载完成后,设置刷新完成
65             }
66
67             @Override
68             public void onFailure(Call<Bean> call, Throwable t) {
69                 Toast.makeText(MainActivity.this, "请求失败", Toast.LENGTH_SHORT).show();
70             }
71         });
72     }
73 }

子布局:

 1 <?xml version="1.0" encoding="utf-8"?>
 2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 3     android:orientation="vertical"
 4     android:layout_width="match_parent"
 5     android:layout_height="wrap_content">
 6     <TextView
 7         android:id="@+id/tv_title"
 8     android:layout_width="match_parent"
 9     android:layout_height="wrap_content" />
10     <ImageView
11         android:id="@+id/img"
12         android:layout_width="match_parent"
13         android:layout_height="wrap_content" />
14     <TextView
15         android:id="@+id/tv_food_str"
16         android:layout_width="match_parent"
17         android:layout_height="wrap_content" />
18 </LinearLayout>

适配器:

 1 public class AdapterListe extends BaseAdapter{
 2     private List<Bean.DataBean> list;
 3     private Context context;
 4
 5     public AdapterListe(List<Bean.DataBean> list, Context context) {
 6         this.list = list;
 7         this.context = context;
 8     }
 9
10     @Override
11     public int getCount() {
12         return list.size();
13     }
14
15     @Override
16     public Object getItem(int i) {
17         return list.get(i);
18     }
19
20     @Override
21     public long getItemId(int i) {
22         return i;
23     }
24
25     @Override
26     public View getView(int i, View view, ViewGroup viewGroup) {
27         view = LayoutInflater.from(context).inflate(R.layout.layout, viewGroup, false);
28         TextView tv_title,tv_food_str;
29         ImageView img;
30         tv_title=view.findViewById(R.id.tv_title);
31         tv_food_str=view.findViewById(R.id.tv_food_str);
32         img=view.findViewById(R.id.img);
33         tv_title.setText(list.get(i).getTitle());
34         tv_food_str.setText(list.get(i).getFood_str());
35         Glide.with(context).load(list.get(i).getPic()).into(img);
36         return view;
37     }
38 }

接口:

1 public interface HttpCall {
2     @GET("ios/cf/dish_list.php?stage_id=1&limit=10&page=")//注解(get)获取
3     Call<Bean> getHttpCall(@Query("page")String page);//注解(@Query)字符串拼接
4 }

Bean类就不发了记着加网络权限和Library包添加依赖

时间: 2024-09-27 01:10:14

PullToRefreshGridView上拉刷新,下拉加载的相关文章

安卓,采用最简单易懂的方式实现上拉刷新下拉加载更多

<!-- Description:上拉刷新,下拉加载更多是现在最流行的手势操作,但是对于初学者来说,在实现上是有一定难度的, 网上很多教程讲的都过于复杂,对于初学者无法起到引导作用,特此写本文,帮助安卓新手入门理解此, 还有最为重要的一点:本文只帮助你理解,并不是想你成为代码搬运工!别被那么多代码吓到了, 其中很多都是注释,仔细看注释对你理解有很大的帮助 Author:Booker L Date:2014-05-16 --> 一,事先准备: 实现该功能,最基本的需要两个东西,一个是OnTouc

Android之 RecyclerView,CardView 详解和相对应的上拉刷新下拉加载

随着 Google 推出了全新的设计语言 Material Design,还迎来了新的 Android 支持库 v7,其中就包含了 Material Design 设计语言中关于 Card 卡片概念的实现 -- CardView.RecyclerView也是谷歌V7包下新增的控件,用来替代ListView的使用,在RecyclerView标准化了ViewHolder类似于ListView中convertView用来做视图缓存. RecyclerView的优点就是,他可以通过设置LayoutMan

jQuery手机端上拉刷新下拉加载更多页面

<!doctype html> <html> <head> <title>jquery 手机端上拉刷新下拉加载更多页面</title> <meta http-equiv="Content-Type" content="text/html;charset=UTF-8"> <meta name="viewpost" content="width=device-wi

PullToRefreshRecyclerView——带上拉刷新下拉加载功能的RecyclerView

PullToRefreshRecyclerView——带上拉刷新下拉加载功能的RecyclerView

新浪微博项目---首页技术点三.上拉刷新,下拉加载的实现(使用ios自带的小菊花实现)

一.上拉刷新,下拉加载的实现(使用ios自带的小菊花实现) 1.下拉刷新 #pragma mark ---集成下*拉刷新控件 -(void)setupDownRefresh { //1.添加刷新控件 UIRefreshControl *control = [[UIRefreshControl alloc] init]; //只有用户通过手动下拉刷新,才会触发UIControlEventValueChanged事件 [control addTarget:self action:@selector(

Android MVP设计框架模板 之 漂亮ListView上拉刷新下拉加载更多

mvp的全称为Model-View-Presenter,Model提供数据,View负责显示,Controller/Presenter负责逻辑的处理.MVP与MVC有着一个重大的区别:在MVP中View并不直接使用Model,它们之间的通信是通过Presenter (MVC中的Controller)来进行的,所有的交互都发生在Presenter内部,而在MVC中View会直接从Model中读取数据而不是通过 Controller. 项目中大部分是面对接口编程,通过P层可以预先将所有需要的接口功能

通用版的上拉刷新下拉加载控件

通用版的上拉刷新下拉加载控件 适用于各种控件实现上拉刷新,下拉加载的功能. 下载地址:http://www.devstore.cn/code/info/964.html 运行截图:    

小程序 上拉刷新/下拉加载

小程序项目中上拉刷新下拉加载是比较常见的需求,官方文档也提供了相当友好的API,但是因为API隐藏的比较深,文档描述也比较模糊所以也折腾了一番(官方文档),在此记录一下使用方式 onPullDownRefresh()  //用户下拉刷新事件,onReachBottom() //用户上拉触底事件 onPullDownRefresh和onReachBottom是小程序的页面事件,官方文档描述"需要在app.json的window选项中或页面的json文件中开启enablePullDownRefres

iOS-上拉刷新下拉加载 新版MJRefresh和EGOTableViewPullRefresh

上拉刷新下拉加载比较流行的两个第三方 MJRefresh和 EGOTableViewPullRefresh 一.最新版的MJRefresh 首先介绍M了个J的 最新版的MJRefresh 因为他的github里有详细介绍,话不多说上代码 [objc] view plain copy // //  ViewController.m //  新版MJRefresh Demo // //  Created by Jack_Jia on 16/1/19. //  Copyright ? 2016年 Ja

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

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