PullToRefreshGridView上拉刷新,下拉加载
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上拉刷新,下拉加载的更多相关文章
- jQuery模拟原生态App上拉刷新下拉加载
jQuery模拟原生态App上拉刷新下拉加载效果代码,鼠标上拉时会显示loading字样,并且会模拟加载一条静态数据,支持触屏设备使用. <!doctype html> <html ...
- Android之 RecyclerView,CardView 详解和相对应的上拉刷新下拉加载
随着 Google 推出了全新的设计语言 Material Design,还迎来了新的 Android 支持库 v7,其中就包含了 Material Design 设计语言中关于 Card 卡片概念的 ...
- Flutter学习笔记(25)--ListView实现上拉刷新下拉加载
如需转载,请注明出处:Flutter学习笔记(25)--ListView实现上拉刷新下拉加载 前面我们有写过ListView的使用:Flutter学习笔记(12)--列表组件,当列表的数据非常多时,需 ...
- 微信小程序 上拉刷新/下拉加载
小程序项目中上拉刷新下拉加载是比较常见的需求,官方文档也提供了相当友好的API,但是因为API隐藏的比较深,文档描述也比较模糊所以也折腾了一番(官方文档),在此记录一下使用方式 onPullDownR ...
- ListView上拉刷新和分页加载完整的Dome
很多人工作的过程中都会碰到ListView下拉刷新和分页加载,然后大多数公司都已经把框架写好了,大家直接用就可以了,有些人一直对这个事情处于迷茫状态,为了让大家对上拉刷新和分页加载有一个比较全面的认识 ...
- jQuery WeUI 组件下拉刷新和滚动加载的实现
最近在做手机版使用到了下拉刷新和滚动加载,记录一下实现过程: 一.引入文件 ? 1 2 3 4 <link rel="stylesheet" href="Conte ...
- 实现app上对csdn的文章列表上拉刷新下拉加载以及加入缓存文章列表的功能 (制作csdn app 四)
转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/23698511 今天继续对我们的csdn客户端未完成的功能进行实现,本篇博客接着客 ...
- XRecyclerView上拉刷新下拉加载
效果图: 首先要添加依赖: //xrecyclerviewimplementation 'com.jcodecraeer:xrecyclerview:1.3.2'//Gsonimplementatio ...
- iOS:延迟加载和上拉刷新/下拉加载的实现
lazy懒加载(延迟加载)UITableView 举个例子,当我们在用网易新闻App时,看着那么多的新闻,并不是所有的都是我们感兴趣的,有的时候我们只是很快的滑过,想要快速的略过不喜欢的内容,但是只要 ...
- MUI - 上拉刷新/下拉加载
新闻信息列表必备的功能,支持Table,Ul等列表. 以下是DIV版本,在安卓端或者ios端必须使用双webview模式,传送门:http://dev.dcloud.net.cn/mui/pulldo ...
随机推荐
- Performance面板看js加载
概述 前几天研究了一个下开发者工具的performance面板,挺有意思的.文件的加载顺序又对页面性能有着至关重要的影响.所以我用performance面板研究了以下几种配置的加载顺序,把过程和结果记 ...
- vue 自学笔记(七) 组件细节问题
前情提要: 这里盘点一下,组件细节的问题 现在我们观察一些用框架开发的网页BiliBili.掘金,会发现很多部分都十分相似或者一模一样,我们甚至可以将其拆分归类.而事实上,页面的确是被一个个组件构成的 ...
- python基础学习笔记 - 备忘
基础中的基础 Python标识符 命名规则: Python标识符区分大小写. 可以包括英文.数字以及下划线,但不能以数字开头. 以下划线开头的标识符是有特殊意义的: a) 以单下划线开 ...
- 原生js实现vue组件功能
在如今VUE盛行的情况下,我们一直在惊叹于VUE的组件的功能,却不知道,原生js早就已经支持了这个功能. 最近在公开课学到的,js还有很多很多需要探索学习. 下面是一个简单的例子 <!DOCTY ...
- chrome如何添加扩展程序及登录
https://jingyan.baidu.com/album/7e440953191a2b2fc0e2ef0c.html?picindex=3
- 快速排序——Quick Sort
基本思想:(分治) 先从数列中取出一个数作为key值: 将比这个数小的数全部放在它的左边,大于或等于它的数全部放在它的右边: 对左右两个小数列重复第二步,直至各区间只有1个数. 辅助理解:挖坑填数 初 ...
- Android 引用文件(.db)的三种方式
1.assets —— 资产目录(该目录中的文件会被直接打包到 apk 文件中).获取该目录下的文件的方式是: InputStream is = getContext().getAssets().op ...
- leetcode — container-with-most-water
/** * Source : https://oj.leetcode.com/problems/container-with-most-water/ * * Created by lverpeng o ...
- php处理文件的思考(去除空行、每行多余字符)
1.去除空行 <?php $str = file_get_contents('a.txt'); $str = explode(PHP_EOL, $str); //分割为数组,每行为一个数组元素 ...
- tensorflow入门指南
TensorFlow是Google公司2015年11月开源的第二代深度学习框架,是第一代框架DistBelief的改进版本. TensorFlow支持python和c/c++语言, 可以在cpu或gp ...