SwipeRefreshLayout实现上拉下拉刷新
1:在布局中添加SwipeRefreshLayout和Listview组件
- <?xml version="1.0" encoding="utf-8"?>
- <RelativeLayout
- style="@style/BaseStyle.White"
- xmlns:android="http://schemas.android.com/apk/res/android">
- <!--下拉刷新-->
- <android.support.v4.widget.SwipeRefreshLayout
- android:id="@+id/srl_refresh"
- style="@style/BaseStyle">
- <!--上拉更多-->
- <ListView
- android:id="@+id/lv_person_goods"
- style="@style/BaseStyle"
- android:gravity="center"
- android:horizontalSpacing="@dimen/margin_standard"
- android:numColumns="2"
- android:scrollbarStyle="outsideOverlay"
- android:verticalSpacing="@dimen/margin_standard"/>
- </android.support.v4.widget.SwipeRefreshLayout>
- <!--数据为空时显示的View-->
- <TextView
- android:id="@+id/tv_no_data"
- style="@style/BaseStyle.FullWrap"
- android:layout_marginTop="@dimen/textview_width_small"
- android:gravity="center_horizontal"
- android:text="暂无数据"
- android:textColor="@color/text_title_standard"
- android:textSize="@dimen/font_size_small"
- android:visibility="gone"/>
- </RelativeLayout>
2:在主页面使用
- /**
- * Created by pengkv on 2014/12/5.
- * 我的宝贝列表页面,用于选择添加到拍卖场
- */
- public class MySaleGoodsListViewActivity extends VolleyActivity implements IInit, IResponseHandler, IPagination, SwipeRefreshLayout.OnRefreshListener {
- private int auctionID;
- private GoodsInfoViewModel mViewModel;
- private TextView mEmptyTV;//空白视图
- private ListView mListView;//专场列表
- private PersonGoodsListAdapter mAdapter;//适配器
- private SwipeRefreshLayout mSwipeRefreshLayout;//下拉刷新布局
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_me_auction_goods_list);
- init();
- }
- @Override
- public void init() {
- ActionBarUtil.setup(this, "我店铺的宝贝");
- auctionID = getIntent().getIntExtra(EnumIntentKey.AUCTION_ID.toString(), 0);
- mListView = (ListView) findViewById(R.id.lv_person_goods);
- mEmptyTV = (TextView) findViewById(R.id.tv_no_data);
- mSwipeRefreshLayout = (SwipeRefreshLayout) findViewById(R.id.srl_refresh);//下拉刷新组件
- mSwipeRefreshLayout.setOnRefreshListener(this);//设置刷新监听器
- mSwipeRefreshLayout.setColorSchemeResources(R.color.background_blue_standard, R.color.white, R.color.background_blue_standard, R.color.white);//设置下拉刷新组件的颜色
- mViewModel = new GoodsInfoViewModel();
- fetchData(FIRST);//得到喜欢列表数据
- }
- @Override
- public void fetchData(int tag) {
- GetGoodsListForSellParam param = new GetGoodsListForSellParam(Data.getUserID(), 1, mViewModel.getPageIndex(), Data.PAGE_SIZE_MEDIUM);
- SquareApi.getGoodsListForSell(this, param, tag);
- }
- /**
- * 更新适配器
- */
- @Override
- protected void onRestart() {
- super.onRestart();
- mViewModel.reset();
- fetchData(FIRST);//得到喜欢列表数据
- }
- @Override
- public void updateUI(Object response, final int tag) {
- if (response == null) return;
- if (tag == FIRST) {
- //得到喜欢列表数据
- mViewModel.inflate(response);
- //通过判断喜欢列表适配器mAdapter是否为空来做分页处理
- if (mAdapter == null) {
- //当适配器为空
- mSwipeRefreshLayout.setRefreshing(false);//下拉刷新组件停止刷新
- mAdapter = new PersonGoodsListAdapter(this, mViewModel.getList());
- mListView.setAdapter(mAdapter);//ListView绑定喜欢适配器
- /**
- * 上拉更多
- */
- mListView.setOnScrollListener(new AbsListView.OnScrollListener() {
- @Override
- public void onScrollStateChanged(AbsListView view, int scrollState) {
- switch (scrollState) {
- case SCROLL_STATE_IDLE:
- if (mListView.getLastVisiblePosition() == mViewModel.getList().size() - 1) {
- if (!mViewModel.isComplete()) {
- fetchNewData(FIRST);
- }
- }
- break;
- }
- }
- @Override
- public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
- }
- });
- mListView.setEmptyView(mEmptyTV);//将此图片绑定到喜欢列表ListView
- } else {
- mAdapter.notifyDataSetChanged();//适配器更新数据
- }
- mListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
- @Override
- public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
- Intent i = new Intent();
- if (getIntent().getBooleanExtra(EnumIntentKey.IS_SELECT_LINK.toString(), false)) { // 选择发送链接
- i.putExtra(EnumIntentKey.GOODS_ID.toString(), mViewModel.getList().get(position).getGoodsID());
- i.putExtra(EnumIntentKey.GOODS_NAME.toString(), mViewModel.getList().get(position).getGoodsName());
- setResult(RESULT_OK, i);
- } else { // 添加到专场
- i.setClass(MySaleGoodsListViewActivity.this, AddAuctionGoodsActivity.class);
- i.putExtra(EnumIntentKey.AUCTION_GOODS_ID.toString(), mViewModel.getList().get(position).getGoodsID());
- i.putExtra(EnumIntentKey.IS_DO.toString(), true);
- i.putExtra(EnumIntentKey.AUCTION_ID.toString(), auctionID);
- startActivity(i);
- }
- finish();
- }
- });
- }
- }
- @Override
- public void fetchNewData(int tag) {
- mViewModel.increasePageIndex();
- fetchData(FIRST);//得到喜欢的拍品列表数据
- }
- @Override
- public void onRefresh() {
- mViewModel.reset();//重置页索引和完成状态
- mAdapter = null;//清空适配器
- fetchData(FIRST);//得到喜欢的拍品列表数据
- }
- }
解析:
(下拉刷新)主页面需要实现SwipeRefreshLayout.OnRefreshListener接口,然后在
- @Override
- public void onRefresh() {
- }
方法中实现更新
(上拉更多)上拉更多需要监听setOnScrollListener()方法
- mListView.setOnScrollListener(new AbsListView.OnScrollListener() {
- @Override
- public void onScrollStateChanged(AbsListView view, int scrollState) {
- switch (scrollState) {
- case SCROLL_STATE_IDLE:
- if (mListView.getLastVisiblePosition() == mViewModel.getList().size() - 1) {
- if (!mViewModel.isComplete()) {
- fetchNewData(FIRST);
- }
- }
- break;
- }
- }
- @Override
- public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
- }
- });
SwipeRefreshLayout实现上拉下拉刷新的更多相关文章
- 练习使用XRecyclerView,可上拉下拉刷新。
package com.lixu.testxrecyclerview; import android.support.v7.app.AppCompatActivity; import android. ...
- iOS不得姐项目--推荐关注模块(一个控制器控制两个tableView),数据重复请求的问题,分页数据的加载,上拉下拉刷新(MJRefresh)
一.推荐关注模块(一个控制器控制两个tableView) -- 数据的显示 刚开始加载数据值得注意的有以下几点 导航控制器会自动调整scrollView的contentInset,最好是取消系统的设置 ...
- 解决iscroll.js上拉下拉刷新手指划出屏幕页面无法回弹问题
博客已迁移至http://zlwis.me. 使用过iscroll.js的上拉下拉刷新效果的朋友应该都碰到过这个问题:在iOS的浏览器中,上拉或下拉刷新时,当手指划出屏幕后,页面无法弹回.很多人因为解 ...
- swift实现UItableview上拉下拉刷新模块
最近用写个项目 发现上拉下拉刷新模块没找到合适的 so 自己写了一个 由于最近忙 教程就不写了 里面有 直接贴地址https://github.com/DaChengTechnology/DCRefr ...
- 打造android万能上拉下拉刷新框架——XRefreshView (二)
打造Android万能上拉下拉刷新框架--XRefreshView(一) 打造Android万能上拉下拉刷新框架--XRefreshView(三) 一.前言 自从上次发表了打造android万能上拉下 ...
- 打造Android万能上拉下拉刷新框架--XRefreshView(三)
转载请注明出处:http://blog.csdn.net/footballclub/ 打造Android万能上拉下拉刷新框架–XRefreshView(一) 打造Android万能上拉下拉刷新框架–X ...
- ListView实现上拉下拉刷新加载功能
第一步.首先在你项目中创建一个包存放支持下拉刷新和上拉加载的类:
- iOS 上拉下拉刷新简单实现代码
一般说到上拉刷新下拉刷新,很多人可能想到的是一个第三方开源框架EGORefresh,下面说下,如何自己写代码实现. UITableView本身是一个UIScrollView,所以UITableView ...
- 【PullToRefresh 系列基本用法】 Android装上拉下拉刷新控制具体的解释
转载请注明:http://blog.csdn.net/duguang77/article/details/40921601 作者信息: Chris Banes大神详情:https://github.c ...
随机推荐
- SpringBatch的核心组件JobLauncher和JobRepository
Spring Batch的框架包括启动批处理作业的组件和存储Job执行产生的元数据.因此只需掌握配置这个基础框架在批处理应用程序中即启动Jobs并存储Job元数据. 组件:Job Launcher和J ...
- 【伯乐在线】这些 Git 技能够你用一年了
原文出处: Pyper 欢迎分享原创到伯乐头条 用git有一年了,下面是我这一年来的git使用总结,覆盖了日常使用中绝大多数的场景.嗯,至少是够用一年了,整理出来分享给大家,不明白的地方可以回复交 ...
- android 自定义view之侧滑效果
效果图: 看网上的都是两个view拼接,默认右侧的不显示,水平移动的时候把右侧的view显示出来.但是看最新版QQ上的效果不是这样的,但给人的感觉却很好,所以献丑来一发比较高仿的. 知识点: 1.Vi ...
- [OpenCV] Write & Read files
例如写 KeyPoint向量,以及他的描述矩阵. // ... vector<KeyPoint> key_points; Mat descriptors; // ... fs.open(o ...
- Scala:访问修饰符、运算符和循环
http://blog.csdn.net/pipisorry/article/details/52902234 Scala 访问修饰符 Scala 访问修饰符基本和Java的一样,分别有:privat ...
- Leetcode解题-链表(2.2.0)基础类
1 基类的作用 在开始练习LeetCode链表部分的习题之前,首先创建好一个Solution基类,其作用就是: Ø 规定好每个子Solution都要实现纯虚函数test做测试: Ø 提供了List ...
- Dynamics CRM2016 Web API之Use custom FetchXML
CRM2016中新增的web api支持fetch xml了,之前使用FetchXML的场景是在后天代码中通过组织服务的retrieve multiple方法,但实际的应用效果有多大,还需要在实际的项 ...
- 详解EBS接口开发之应收款处理
参考实例参考:杜春阳 R12应收模块收款API研究 (一)应收款常用标准表简介 1.1 常用标准表 如下表中列出了与应收款处理相关的表和说明: 表名 说明 其他信息 AR_BATCHES_ALL ...
- 二维码扫描&集合排序
一.二维码扫描机制 二维条码/二维码(2-dimensional bar code)是用某种特定的几何图形按一定规律在平面(二维方向上)分布的黑白相间的图形记录数据符号信息的:在代码编制上巧妙地利用构 ...
- [supervisor] 使用小记(入门教程)
之前到现在很久没有用了,还是从安装说下,做个简单的实验,系统为Ubuntu14.04 快速安装配置 sudo pip_python install supervisor sudo echo_super ...
