Android刷新组件的学习

Android零基础入门第72节:SwipeRefreshLayout下拉刷新 SwipeRefrshLayout是Google官方更新的一个控件,可以实现下拉刷新的效果。 阅读详情

这个 刷新的组件Android-PullToRefresh 还是很好用的,这里只测试学习了ListView的上拉刷新和下拉加载。根据文档的介绍它可以Wrraper工作ListView、GridView、WebView、ViewPager、ScrollView等等。ListView是非常常见的,所以记录学习。

参考的资料如下,这些资料足以知道如何使用了。

1.  项目地址   xml属性参考     可以使用的方法接口

2. 博文参考

Android PullToRefresh使用详解

pulltorefresh(二)的自定义属性介绍、attrs文件介绍

Android-PullToRefresh 使用心得

3. 正如作者所说,它是一个Wrapper,所以使用的方法和ListView并没有什么不一样。在layout中定义一个布局:

<span style="font-size:18px;">    <com.handmark.pulltorefresh.library.PullToRefreshListView
        android:id="@+id/listview"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        ptr:ptrMode="both"
        ptr:ptrAnimationStyle="rotate"
        ptr:ptrRefreshableViewBackground="@android:color/holo_blue_bright"
        ptr:ptrHeaderBackground="@android:color/holo_orange_light"
        ptr:ptrHeaderTextColor="@android:color/holo_red_light" /></span>

其中属性的说明,可以参考文档地址或者上面的链接。

然后在Activity中,对它处理:

<span style="font-size:18px;">        
        mPullToRefreshListView = (PullToRefreshListView) findViewById(R.id.listview);
        mAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, mStringArray);
        
        mPullToRefreshListView.setAdapter(mAdapter);
        mPullToRefreshListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {

			@Override
			public void onItemClick(AdapterView<?> parent, View view,
					int position, long id) {
				Log.e(TAG, "position-->" + position);
				
				String item = (String) mAdapter.getItem(position-1); 
						
				Toast.makeText(getApplicationContext(), item, Toast.LENGTH_SHORT).show();
			}
			
		});</span>

代码中设置上拉或者下拉的提示文字:

<span style="font-size:18px;">        //设置指示的文字
        ILoadingLayout startLabels = mPullToRefreshListView.getLoadingLayoutProxy(true, false);
        startLabels.setPullLabel("下拉刷新");
        startLabels.setRefreshingLabel("正在刷新");
        startLabels.setReleaseLabel("释放刷新");
        ILoadingLayout endLabels = mPullToRefreshListView.getLoadingLayoutProxy(false, true);
        endLabels.setPullLabel("加载更多");
        endLabels.setRefreshingLabel("正在加载");
        endLabels.setReleaseLabel("释放加载");</span>

设置刷新监听:

<span style="font-size:18px;">        mPullToRefreshListView.setOnRefreshListener(new OnRefreshListener2<ListView>() {

			@Override
			public void onPullDownToRefresh(
					PullToRefreshBase<ListView> refreshView) {
				Log.e(TAG, "上拉刷新");
				//mPullToRefreshListView.setMode(PullToRefreshBase.Mode.BOTH);
				new MyDataTaskUp().execute();
			}

			@Override
			public void onPullUpToRefresh(
					PullToRefreshBase<ListView> refreshView) {
				Log.e(TAG, "下拉更多");
				new MyDataTaskDown().execute();
			}

		});</span>

如果有需要,可以设置Pull事件监听:

<span style="font-size:18px;">        mPullToRefreshListView.setOnPullEventListener(new OnPullEventListener<ListView>() {

			@Override
			public void onPullEvent(PullToRefreshBase<ListView> refreshView,
					State state, Mode direction) {
				if (state == PullToRefreshBase.State.PULL_TO_REFRESH ) {
					Log.e(TAG, "PULL_TO_REFRESH");
				} else if (state == PullToRefreshBase.State.REFRESHING ) {
					Log.e(TAG, "REFRESHING");
				} if (state == PullToRefreshBase.State.RELEASE_TO_REFRESH ) {
					Log.e(TAG, "RELEASE_TO_REFRESH");
				}
			}
		});</span>

其中,有以下需要记录的是:

①当使用 setRefreshing()来手动刷新时,它根据最近一次的刷新方式来决定是进行上拉还是下拉,所以在点击手动刷新时,先设置组件的的模式,让它只允许下拉刷新,然后在刷新监听中恢复为允许两种模式。

<span style="font-size:18px;">    //按钮监听
    public void onBtnRefresh(View view) {
    	mPullToRefreshListView.setMode(PullToRefreshBase.Mode.PULL_FROM_START);
    	mPullToRefreshListView.setRefreshing();
    }</span>

②资源下载


Android Studio—PullToRefresh 框架 网上学习 Android的资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。网上学习 Android的资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。无刷新功能,从顶部刷新,从底部刷新,二者都有,只允许手动刷新。帮助大家学习提升进阶,也节省大家在网上搜索资料的时间来学习,也可以分享给身边好友一起学习。顶部指示箭头的图片,设置后会覆盖ptrDrawable中顶部的设置。 阅读详情

相关推荐

【Android笔记95】Android之下拉刷新组件SwipeRefreshLayout的使用

androidx包下提供了一个SwipeRefreshLayout下拉刷新组件,它的作用就是当用户向下滑动屏幕的时候,就会出现一个刷新的效果,一般在下拉刷新的事件中重新调用后端接口,获取最新的数据然后重新渲染界面。SwipeRefreshLayout类是继承自ViewGroup,其中常用的方法有下面这些:

✅ Java 开发工程师 1118

android刷新组件,亲自动手编写Android通用刷新控件

项目中我们经常有上拉、下拉刷新的需求,几乎所有的listView、RecyclerView都会伴随着上拉、下拉刷新的需求,如果我们使用一些开源控件,换了控件我们就要更新,现在我们自己撸起袖子写一个通用的刷新控件思路:写一个继承RelativeLayout的RefreshLayout添加头尾控件作为刷新控件通过事件分发来进行刷新操作通过动画来控制控件移动目的:让他的所有子控件都可以使用,哪怕是一个T...

weixin_29713403的博客 576

Android下拉刷新功能实战指南

本文还有配套的精品资源,点击获取 简介:在Android应用开发中,下拉刷新功能为用户提供了一个直观的界面交互来获取最新数据。本文详细介绍了下拉刷新的原理、两种常用的实现方式(包括官方的SwipeRefreshLayout和自定义的ScrollerView),以及它们的使用方法、优化和注意事项,帮助开发者在实际开发中提供更好的用户体验。 1. 下拉刷新机制简介 ...

weixin_42514750的博客 3391

android 下拉刷新 组件,Android实现简单的下拉刷新控件

背景:列表控件在Android App开发中用到的场景很多。在以前我们用ListView,GradView,现在应该大多数开发者都已经在选择使用RecyclerView了,谷歌给我们提供了这些方便的列表控件,我们可以很容易的使用它们。但是在实际的场景中,我们可能还想要更多的能力,比如最常见的列表下拉刷新,上拉加载。上拉刷新和下拉加载应该是列表的标配吧,基本上有列表的地方都要具体这个能力。虽然刷新这...

weixin_29577885的博客 1258

Android 下拉上拉刷新组件实现指南

本文还有配套的精品资源,点击获取 简介:在Android开发中,实现下拉刷新和上拉加载更多功能对于提供流畅的数据流体验至关重要。本文全面介绍了一款支持多种视图(如ListView和GridView)的全能刷新组件的集成与使用。详细讲解了下拉刷新与上拉加载的概念、Android相关组件的使用、集成步骤、兼容性和通用性、用户体验优化及性能考量。该组件通过高度封装和抽象设计,简化...

weixin_42551310的博客 3037

Android自定义刷新控件

扩展谷歌刷新控件 SwipeRefreshLayout ,实现上拉加载更多。

Android Scroller及下拉刷新组件原理学习

Android事件拦截机制android中事件的传递和拦截和View树结构是相关联的,在View树中,分为叶子节点和普通节点,普通节点有子节点只能是ViewGroup,叶子节点可以是View或者ViewGroup。Android和事件分发拦截相关的方法有 dispatchTouchEvent(MotionEvent ev) 事件分发相关的方法,沿着View树将一个用户的触摸事件向下分发。 on

yy254117440的博客 709

android 刷新组件

刷新组件 上拉下拉 刷新

【安卓学习之常见问题】自定义组件-刷新后跳到第一行

提示:这里是收集了和文件分享有关的文章。

任我飞的博客 685

从NHANES到发表:如何用survey包完成符合CDC要求的统计分析(含完整R代码)

本文详细介绍了如何利用R语言的survey包,对美国国家健康与营养调查数据进行符合CDC要求的统计分析。文章重点解析了NHANES数据的复杂抽样设计、权重变量的正确选择与调整,并提供了从数据获取、清洗、构建调查设计对象到执行加权回归及生成发表级表格的完整R代码实战指南,帮助研究者避免常见错误,确保分析结果的准确性与可发表性。

weixin_29054245的博客 521

ubuntu20.04 终端安装claude

【代码】ubuntu20.04 终端安装claude。

hongliyu_lvliyu的博客 2591

Android学习中遇到的问题——新手常见问题之组件(View)刷新失败(计时器刷新失败)

1

chmfy006的博客 589

微积分,用编程理解高数(python,C,C++)

很好理解,导数中,x是哪一点的导数,dx是精准度,y等于f(x)即函数。导数结果就是瞬时变化率。积分很好理解,a为下限,b为上限,y为函数,结果就是y=f(x)下a到b的面积。只要用定积分代入a=0,b=10(10s)y=x(1*x=1)就得到结果。F(x)为原函数,即微分后的函数是f(x)dx,微分前是F(x)一列车初始速度为10m/s,加速度为。才几十行代码,微积分也不是很难啊。,问速度达到20时车走了多少米。

linhhanpy的博客 1178

android重新加载组件,android组件SwipeRefreshLayout下拉小球式刷新效果

swiperefreshlayout实现下拉小球式的刷新,供大家参考,具体内容如下布局文件:xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"android:layout_height="match_parent"android:paddingLeft="@dimen/activity...

weixin_31845113的博客 193

小红书分享链接失效?教你永久保存笔记的2种方法(含API调用技巧)

本文详细解析了小红书笔记链接失效的原因,并提供了两种永久保存笔记的方法,包括短链接转换API调用技巧和本地归档技术。通过Python代码示例和工具推荐,帮助用户实现笔记内容的高效保存和管理,确保珍贵内容不再丢失。

gin88的博客 2753

stm32f407VET6 系统学习 day01 GPIO 配置

stm32f407VET6 系统学习 day01 GPIO 配置 LED 蜂鸣器 按键的不讲了,之前讲过了

she666666的博客 8904

android下拉刷新——swipeRefresh的使用

代码真的是重质不重量,质量高的代码,是当前代码界提倡的,当然写出高质量的代码肯定需要一个相当高的专业素养,这需要在日常的代码书写中逐渐去吸收掌握,谁不是每天都在学习呀,目的还不是为了一个,为实现某个功能写出高质量的代码。所以,长征路还长,大家还是好好地做个务实的程序员吧。最后,小编这里有一系列Android提升学习资料,有兴趣的小伙伴们可以来看下哦~《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》点击传送门,即可获取!

2401_84010457的博客 852

【全新官方接口】php检测微信域名拦截,检测微信域名被封

你的域名在微信被拦截的3种常见情况 1、域名因违规或有风险被拦截(红色拦截) 2、类似taobao.com,douyin.com这种的恶意竞争式拦截,淘宝、抖音等微信的竞争对手一般都是白色拦截(白色拦截) 3、有一个中间页的拦截,需要多次点击按钮才可以跳转到你的域名的,多是一些新型域名后缀,例如.top .xyz .link后缀,这种情况,备案后可以解决(备案拦截) 通过php get_headers()函数就可以分析到结果 这个下标为6是一个URL,在微信访问后正是这个讨厌的页面! 如果切换为

TANKING,开源开发者! 2875

2024年Android最全Android 主流通用常用框架汇总(持续更新)(1),这些细节在Android面试上要注意了

学习技术是一条慢长而艰苦的道路,不能靠一时激情,也不是熬几天几夜就能学好的,必须养成平时努力学习的习惯。所以:贵在坚持!最后如何才能让我们在面试中对答如流呢?答案当然是平时在工作或者学习中多提升自身实力的啦,那如何才能正确的学习,有方向的学习呢?有没有免费资料可以借鉴?为此我整理了一份Android学习资料路线:这里是一部分我工作以来以及参与过的大大小小的面试收集总结出来的一套BAT大厂面试资料专题包,主要还是希望大家在如今大环境不好的情况下面试能够顺利一点,希望可以帮助到大家。

2301_82241983的博客 3308

VCS NLP 低功耗验证系列(六):功耗分析与优化——SAIF 报告与验证效率提升

本文是VCS NLP低功耗验证系列的第六篇,主要解决功耗数据采集和验证效率优化问题。文章首先介绍了SAIF(Switching Activity Interchange Format)文件在功耗分析中的作用,详细讲解了VCS的Region-Based SAIF功能,包括三个关键系统任务($saif_region_create、$saif_region_exclude、$saif_region_monitor)的使用方法和工程实践建议。接着从编译侧、运行侧和方法学侧三个维度提出了NLP验证效率优化策略,特别强

元直的博客 470

Android 13.0 设置默认屏幕亮度百分比

在13.0的系统ROM产品开发中,在一些产品开发中,对于设置默认屏幕亮度和屏幕亮度百分比的功能,在开发中也是常见的功能,在10.0的平台设置可能有一些不同,一般的都是在SettingProvider中设置就可以了 在11.0以后的系统中设置默认屏幕亮度的方法就不同了,接下来具体分析功能的实现

安卓兼职framework和app工程师的博客 1560

Android-UI组件合集

写到这里也结束了,在文章最后放上一个小小的福利,以下为小编自己在学习过程中整理出的一个关于Flutter的学习思路及方向,从事互联网开发,最主要的是要学好技术,而学习技术是一条慢长而艰苦的道路,不能靠一时激情,也不是熬几天几夜就能学好的,必须养成平时努力学习的习惯,更加需要准确的学习方向达到有效的学习效果。由于内容较多就只放上一个大概的大纲,需要更及详细的学习思维导图的。

2401_84132370的博客 1261

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

Android-UI组件合集(1)

你不陌生, 在列表或者视图的顶部或者底部拖动可以刷新数据和页面。可以和ListView、ExpandableListView、GridView、WebView、ScrollView、HorizontalScrollView、ViewPager配合使用。强大的图像下载和缓存库。bootstrap风格的按钮。 使用Font Awesome图标字体。Facebook提供的SDK, 可以在应用中集成Facebook.不同于上面的Android-Bootstrap。 此项目是一个Android应用程序的模版, 相当于

2401_84415534的博客 727

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

Android UI绘制原理:UI的绘制流程是怎么样呢?为什么子线程不能刷新UI呢?讲解大体的流程是怎么样的

刚开始看UI绘制原理的时候,完全看不懂,硬着头皮去看,渐渐的有些可以看懂了,但绝大部分还是不懂。这个时候,我就从“为什么子线程不能刷新UI呢?”入手,比如不能刷新原因是什么,了解原因后,你懂了,但你会发现你不懂的地方也会更多,但是,你已经知道你有哪些不懂了,这个时候,你重新回头去看第二篇的时候,你思路就清晰很多了,你又能看懂很多了。所以,第一次看肯定有很多不懂,那么就第二次,第三次。

前期后期 1266

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

Android官方架构组件Paging-Ex_列表状态的响应式管理(1)

Paging是Google在2018年I/O大会上推出的适用于Android原生开发的分页库,随着越来越多的开发者着手使用Paging,越来越多的问题暴露出来,最直接的一个问题是:如何管理列表额外的状态?这样的需求随处可见,比如侧滑删除等等:本文将阐述:如何管理Paging分页列表的状态,为何这样设计,以及设计的过程。

2401_84519718的博客 505

安卓学习文档收集汇总

安卓学习文档收集汇总 https://www.jianshu.com/p/86aed183ce6c?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation 0.3 2017.09.04 13:36* 字数 14788 阅读 988评论 0喜欢 35 Lear...

王人冉的博客 2932
上一篇: 学习资源记录
下一篇: Android组件ViewPagerIndicator学习
xiongmaozhijin
博客等级 码龄15年 4粉丝 27原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值