PullToRefreshGridView上拉刷新,下拉加载

布局:

 <?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/activity_main"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.example.asus.pull_1.Activity.MainActivity"> <com.handmark.pulltorefresh.library.PullToRefreshGridView
android:id="@+id/gridview"
android:layout_width="match_parent"
android:layout_height="match_parent"> </com.handmark.pulltorefresh.library.PullToRefreshGridView>
</RelativeLayout>

Activity:

 public class MainActivity extends AppCompatActivity {

     @BindView(R.id.gridview)
PullToRefreshGridView gridview;
private int index=1;
private ArrayList<Bean.DataBean> list;
private AdapterListe adapterListe;
private Retrofit builder; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ButterKnife.bind(this);
gridview.setMode(PullToRefreshBase.Mode.BOTH);//能下拉刷新和上拉加载  
init();
} private void init() {
list = new ArrayList();
adapterListe = new AdapterListe(list, MainActivity.this);//适配器
gridview.setAdapter(adapterListe);
loadData(index);
gridview.setOnRefreshListener(new PullToRefreshBase.OnRefreshListener2<GridView>() {
//刷新
@Override
public void onPullDownToRefresh(PullToRefreshBase<GridView> refreshView) {
list.clear();
loadData(1);
gridview.postDelayed(new Runnable() {
@Override
public void run() {
gridview.onRefreshComplete();//加载完成后,设置刷新完成
}
},1000);
}
//加载
@Override
public void onPullUpToRefresh(PullToRefreshBase<GridView> refreshView) {
index++;
list.clear();
loadData(index);
gridview.postDelayed(new Runnable() {
@Override
public void run() {
gridview.onRefreshComplete();//加载完成后,设置刷新完成
}
},1000);
}
}); } private void loadData(int index) {
//解析
builder = new Retrofit.Builder()
.baseUrl("http://www.qubaobei.com/")
.addConverterFactory(GsonConverterFactory.create())
.build();
builder.create(HttpCall.class).getHttpCall(""+index).enqueue(new Callback<Bean>() {
@Override
public void onResponse(Call<Bean> call, Response<Bean> response) {
list.addAll(response.body().getData());//把获取到的数据放到集合里
adapterListe.notifyDataSetChanged();//加载完成后,设置刷新完成
} @Override
public void onFailure(Call<Bean> call, Throwable t) {
Toast.makeText(MainActivity.this, "请求失败", Toast.LENGTH_SHORT).show();
}
});
}
}

子布局:

 <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<TextView
android:id="@+id/tv_title"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<ImageView
android:id="@+id/img"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<TextView
android:id="@+id/tv_food_str"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</LinearLayout>

适配器:

 public class AdapterListe extends BaseAdapter{
private List<Bean.DataBean> list;
private Context context; public AdapterListe(List<Bean.DataBean> list, Context context) {
this.list = list;
this.context = context;
} @Override
public int getCount() {
return list.size();
} @Override
public Object getItem(int i) {
return list.get(i);
} @Override
public long getItemId(int i) {
return i;
} @Override
public View getView(int i, View view, ViewGroup viewGroup) {
view = LayoutInflater.from(context).inflate(R.layout.layout, viewGroup, false);
TextView tv_title,tv_food_str;
ImageView img;
tv_title=view.findViewById(R.id.tv_title);
tv_food_str=view.findViewById(R.id.tv_food_str);
img=view.findViewById(R.id.img);
tv_title.setText(list.get(i).getTitle());
tv_food_str.setText(list.get(i).getFood_str());
Glide.with(context).load(list.get(i).getPic()).into(img);
return view;
}
}

接口:

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

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

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

  1. jQuery模拟原生态App上拉刷新下拉加载

    jQuery模拟原生态App上拉刷新下拉加载效果代码,鼠标上拉时会显示loading字样,并且会模拟加载一条静态数据,支持触屏设备使用. <!doctype html> <html ...

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

    随着 Google 推出了全新的设计语言 Material Design,还迎来了新的 Android 支持库 v7,其中就包含了 Material Design 设计语言中关于 Card 卡片概念的 ...

  3. Flutter学习笔记(25)--ListView实现上拉刷新下拉加载

    如需转载,请注明出处:Flutter学习笔记(25)--ListView实现上拉刷新下拉加载 前面我们有写过ListView的使用:Flutter学习笔记(12)--列表组件,当列表的数据非常多时,需 ...

  4. 微信小程序 上拉刷新/下拉加载

    小程序项目中上拉刷新下拉加载是比较常见的需求,官方文档也提供了相当友好的API,但是因为API隐藏的比较深,文档描述也比较模糊所以也折腾了一番(官方文档),在此记录一下使用方式 onPullDownR ...

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

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

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

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

  7. 实现app上对csdn的文章列表上拉刷新下拉加载以及加入缓存文章列表的功能 (制作csdn app 四)

    转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/23698511 今天继续对我们的csdn客户端未完成的功能进行实现,本篇博客接着客 ...

  8. XRecyclerView上拉刷新下拉加载

    效果图: 首先要添加依赖: //xrecyclerviewimplementation 'com.jcodecraeer:xrecyclerview:1.3.2'//Gsonimplementatio ...

  9. iOS:延迟加载和上拉刷新/下拉加载的实现

    lazy懒加载(延迟加载)UITableView 举个例子,当我们在用网易新闻App时,看着那么多的新闻,并不是所有的都是我们感兴趣的,有的时候我们只是很快的滑过,想要快速的略过不喜欢的内容,但是只要 ...

  10. MUI - 上拉刷新/下拉加载

    新闻信息列表必备的功能,支持Table,Ul等列表. 以下是DIV版本,在安卓端或者ios端必须使用双webview模式,传送门:http://dev.dcloud.net.cn/mui/pulldo ...

随机推荐

  1. Performance面板看js加载

    概述 前几天研究了一个下开发者工具的performance面板,挺有意思的.文件的加载顺序又对页面性能有着至关重要的影响.所以我用performance面板研究了以下几种配置的加载顺序,把过程和结果记 ...

  2. vue 自学笔记(七) 组件细节问题

    前情提要: 这里盘点一下,组件细节的问题 现在我们观察一些用框架开发的网页BiliBili.掘金,会发现很多部分都十分相似或者一模一样,我们甚至可以将其拆分归类.而事实上,页面的确是被一个个组件构成的 ...

  3. python基础学习笔记 - 备忘

    基础中的基础 Python标识符 命名规则: Python标识符区分大小写. 可以包括英文.数字以及下划线,但不能以数字开头. 以下划线开头的标识符是有特殊意义的: a)         以单下划线开 ...

  4. 原生js实现vue组件功能

    在如今VUE盛行的情况下,我们一直在惊叹于VUE的组件的功能,却不知道,原生js早就已经支持了这个功能. 最近在公开课学到的,js还有很多很多需要探索学习. 下面是一个简单的例子 <!DOCTY ...

  5. chrome如何添加扩展程序及登录

    https://jingyan.baidu.com/album/7e440953191a2b2fc0e2ef0c.html?picindex=3

  6. 快速排序——Quick Sort

    基本思想:(分治) 先从数列中取出一个数作为key值: 将比这个数小的数全部放在它的左边,大于或等于它的数全部放在它的右边: 对左右两个小数列重复第二步,直至各区间只有1个数. 辅助理解:挖坑填数 初 ...

  7. Android 引用文件(.db)的三种方式

    1.assets —— 资产目录(该目录中的文件会被直接打包到 apk 文件中).获取该目录下的文件的方式是: InputStream is = getContext().getAssets().op ...

  8. leetcode — container-with-most-water

    /** * Source : https://oj.leetcode.com/problems/container-with-most-water/ * * Created by lverpeng o ...

  9. php处理文件的思考(去除空行、每行多余字符)

    1.去除空行 <?php $str = file_get_contents('a.txt'); $str = explode(PHP_EOL, $str); //分割为数组,每行为一个数组元素 ...

  10. tensorflow入门指南

    TensorFlow是Google公司2015年11月开源的第二代深度学习框架,是第一代框架DistBelief的改进版本. TensorFlow支持python和c/c++语言, 可以在cpu或gp ...