android下拉刷新,上拉获取更多

一步一步实现ListView加载网络数据,下滑底部加载,顶部下拉刷新,安卓面试项目源码 private RefreshListView mListView; private Context mContext; // 网络图片加载 public List getDatas() { return mDatas; } public void setDatas(List mDatas) { this.mDatas = mDatas; } public void setData(int pos, NewsBean bean) { if (-1 != pos) { mDatas.add(pos, bean 阅读详情

很经典的功能,可以尝试去写写,项目赶的很,就借用了别人的。github上搜索的,选择了 chrisbanes/Android-PullToRefresh(https://github.com/chrisbanes/Android-PullToRefresh)。效果实现了,在此记录下。

1、配置环境,这个比较简单,下载后作为一个library直接导入;

2、实现一个下拉刷新和上拉获取更多,(借鉴自带的一个listview):

MainActivity.java

package com.ttdevs.pullrefresh;

import java.util.Arrays;
import java.util.LinkedList;

import android.app.ListActivity;
import android.os.AsyncTask;
import android.os.Bundle;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.Toast;

import com.handmark.pulltorefresh.library.PullToRefreshBase;
import com.handmark.pulltorefresh.library.PullToRefreshBase.Mode;
import com.handmark.pulltorefresh.library.PullToRefreshBase.OnRefreshListener2;
import com.handmark.pulltorefresh.library.PullToRefreshListView;

public class MainActivity extends ListActivity {

	private PullToRefreshListView mPullRefreshListView;
	private LinkedList<String> mListItems;
	private ArrayAdapter<String> mAdapter;

	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);

		mPullRefreshListView = (PullToRefreshListView) findViewById(R.id.pull_refresh_list);
		mPullRefreshListView.setMode(Mode.BOTH);
		mPullRefreshListView.setOnRefreshListener(new OnRefreshListener2<ListView>() {

			@Override
			public void onPullDownToRefresh(PullToRefreshBase<ListView> refreshView) {
				Toast.makeText(getApplicationContext(), "下拉刷新", Toast.LENGTH_LONG).show();
				new GetDataTask().execute();
			}

			@Override
			public void onPullUpToRefresh(PullToRefreshBase<ListView> refreshView) {
				Toast.makeText(getApplicationContext(), "上拉获取更多", Toast.LENGTH_LONG).show();
				new GetDataTask().execute();
			}
		
		});

		ListView actualListView = mPullRefreshListView.getRefreshableView();

		// Need to use the Actual ListView when registering for Context Menu
		registerForContextMenu(actualListView);

		mListItems = new LinkedList<String>();
		mListItems.addAll(Arrays.asList(mStrings));

		mAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, mListItems);
		actualListView.setAdapter(mAdapter);
	}

	private class GetDataTask extends AsyncTask<Void, Void, String[]> {

		@Override
		protected String[] doInBackground(Void... params) {
			try {
				Thread.sleep(1000);
			} catch (InterruptedException e) {
			}
			return mStrings;
		}

		@Override
		protected void onPostExecute(String[] result) {
			mListItems.addFirst("Added after refresh...");
			mAdapter.notifyDataSetChanged();

			mPullRefreshListView.onRefreshComplete();

			super.onPostExecute(result);
		}
	}

	private String[] mStrings = { "Abbaye de Belloc", "Abbaye du Mont des Cats", "Abertam", "Abondance", "Ackawi",
			"Acorn", "Adelost", "Affidelice au Chablis", "Afuega'l Pitu", "Airag", "Airedale", "Aisy Cendre",
			"Allgauer Emmentaler", "Abbaye de Belloc", "Abbaye du Mont des Cats", "Abertam", "Abondance", "Ackawi",
			"Acorn", "Adelost", "Affidelice au Chablis", "Afuega'l Pitu", "Airag", "Airedale", "Aisy Cendre",
			"Allgauer Emmentaler" };
}


activity_main.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <!-- The PullToRefreshListView replaces a standard ListView widget. -->

    <com.handmark.pulltorefresh.library.PullToRefreshListView
        android:id="@+id/pull_refresh_list"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:cacheColorHint="#00000000"
        android:divider="#19000000"
        android:dividerHeight="4dp"
        android:fadingEdge="none"
        android:fastScrollEnabled="false"
        android:footerDividersEnabled="false"
        android:headerDividersEnabled="false"
        android:smoothScrollbar="true" />

</LinearLayout>

3、主要是拷贝demo中的listview那个,实现的监听器是OnRefreshListener2,看了下源码,OnRefreshListener和OnRefreshListener2只可以设置一个,也就是最后设置的那个有效,最后就是设置滑动的模式:mPullRefreshListView.setMode(Mode.BOTH);这个很重要,否则上拉无效,最后效果如下:

4、Chrisbanes的PullToRefresh:下载


初识Renode 1. 简介 Renode是Antmicro公司发布的一个开发框架,使得开发人员通过模拟物理硬件系统(包括CPU、外围设备、传感器、环境以及节点之间的有线或无线介质),加速物联网和嵌入式系统的开发。它可在PC上通过软件对嵌入式设备进行模拟,可模拟Cortex-M、Cortex-A、RISC-V和其他CPU,并可模拟外设以及各种通信总线和接口。其指令模拟器使用C语言开发,外设模拟器使用C#语言开发,测试及输出层面的内容则用python编写。 Renode官网:Renodehttps://renode.io/ 阅读详情

相关推荐

HFSS螺旋线圈的优化设计与高效仿真实践

本文详细介绍了HFSS螺旋线圈的优化设计与高效仿真实践,涵盖核心参数设置、参数化建模、仿真加速技巧及结果分析。通过HFSS软件实现螺旋线圈的高效仿真,特别适用于无线充电和RFID系统设计,提升设计效率与性能验证准确性。

weixin_30235225的博客 445

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

上拉刷新,下拉加载更多是现在最流行的手势操作,但是对于初学者来说,在实现上是有一定难度的, 网上很多教程讲的都过于复杂,对于初学者无法起到引导作用,特此写本文,帮助安卓新手入门理解此, 还有最为重要的一点:本文只帮助你理解,并不是想你成为代码搬运工!别被那么多代码吓到了, 其中很多都是注释,仔细看注释对你理解有很大的帮助

lovingshu's Forever 8772

从Reset到Read:深入解析Rolling Shutter曝光流水线

本文深入解析Rolling Shutter(卷帘曝光)的工作原理,重点探讨Reset和Read信号在图像传感器中的关键作用。通过Reset-Read流水线机制,详细解释了曝光控制、时序调优及运动伪影补偿等核心技术,帮助读者理解卷帘曝光在高速摄影和动态场景中的应用。

weixin_42531925的博客 256

android-下拉更多列表

现在很多的登录界面都有记住账号的的这个功能,在点击输入账号的时候会出现一个列表供用户选择。点击其中的条目后会自动把信息填充到文本框当中。 然后我用PopupWindow组件实现了一个点击更多按钮实现更多列表的一个功能,这个下拉更多列表的效果如下: 接下来我们就开始一步一步的实现下拉更多列表功能。 1、首先新建一个对话框,布局文件login_layout.xml如下: ` <Line

a641832648的博客 1145

C# NX二次开发:两种过滤器设置方案的实战解析与场景适配

本文深入解析C# NX二次开发中的两种过滤器设置方案:AddFilterHandler回调与MaskTriple属性设置。通过实战案例对比其性能差异与适用场景,帮助开发者根据需求选择最优方案,提升NX插件开发效率与交互体验。特别针对BlockStyler集成场景提供专业建议,是NX二次开发者的实用指南。

weixin_33739646的博客 847

高速DAC时钟与配置实战:DAC5681Z硬件设计与寄存器编程详解

在高速数据转换系统中,时钟信号是决定系统性能的核心要素,其稳定性和纯净度直接影响数模转换器(DAC)的输出频谱纯度与动态范围。时钟电路的设计原理涉及信号完整性、阻抗匹配与直流偏置,而内部锁相环(PLL)和延迟锁相环(DLL)的配置则是实现精确时序控制的关键技术。这些技术的价值在于,它们共同保障了高速通信、雷达和任意波形生成等应用对信号实时性与精度的严苛要求。本文聚焦于德州仪器(TI)的DAC5681Z,深入解析其外部时钟输入电路的硬件设计要点,包括端接电阻的计算与选型,并详细拆解通过串行外设接口(SPI)对

weixin_30342363的博客 190

Android自定义下拉、加载更多控件

话不多说,先上效果图 简单粗暴的下拉刷新是怎么实现的呢,非常简单,首先点此下载自定义控件 emmmmm。。。。没积分下载的,来py(q 1107834296) 然后当做module项目导入, 把这个module项目依赖到当前主工程 非常简单,然后接下来在项目布局中使用就好了 &lt;com.handmark.pulltorefresh.library.PullToRef...

weixin_41771564的博客 1121

STM32巡线小车PID调参实战:从五路灰度传感器数据到稳定运行的避坑指南

本文详细介绍了STM32巡线小车的PID调参实战,从五路灰度传感器数据处理到PID参数优化,提供了系统化的调试方法和常见问题解决方案。通过加权平均法计算偏移量,逐步调整比例、积分、微分参数,实现小车稳定巡线。文章还涵盖了定时器配置、控制周期优化及高级调试技巧,帮助开发者避开常见陷阱,提升巡线性能。

weixin_42570484的博客 195

Android下拉刷新和上拉加载更多

Android下拉刷新和上拉加载更多 下拉刷新 通过android系统提供的组件:SwipeRefreshLayout 一、基本使用 1 xml中 添加 SwipeRefreshLayout 组件 该组件包含着要操作下拉刷新的控件 如ListView RecyclerView 等 注意这里的SwipeRefreshLayout组件的子布局只能有一个 &lt;androi...

5ingwings(SiHao)的博客 2万+

【七.三维视觉与视频分析】【1.点云处理:PointNet++/PointTransformer】

各位老铁,今天咱们要聊的可不是普通的二维图像处理,而是三维视觉领域最硬核的技术——点云处理。从最早的PointNet到如今的PointTransformer,这场技术进化堪比三维版的"像素革命"。今天咱们就深入解剖两大里程碑:PointNet++和PointTransformer,保证让你看完全文就能在点云领域横着走!想象一下,你抓了把沙子撒在空中,每粒沙子的位置都是三维坐标——这就是点云的典型形态。最后送大家一句话:点云处理就像在三维宇宙中寻找星辰的轨迹,既要望远镜的宏观视野,也要显微镜的细致入微。

商务合作|问题讨论|交流学习 请联系作者微信,加微信请务必注明来意,博客主页有联系方式 474

2025 华为OD机试真题e卷 C语言 实现【竖直四子棋】

竖直四子棋的棋盘是竖立起来的,双方轮流选择棋盘的一列下子,棋子因重力落到棋盘底部或者其他棋子之上,当一列的棋子放满时,无法再在这列上下子。

MISAYAONE的博客 1418

Android入门---下拉刷新上拉加载更多策略的实现

最近需要实现一个下拉刷新上拉加载更多的项目,目前已经实现,下面总结下实现过程中遇到的问题和相关解决;首先理清思路:因为涉及到网络获取数据以及数据的缓存,所以看似简单的一个实现,加上这些后就变得稍微复杂点了,那就一步一步由浅入深的理解; 我将整体结构分成三个部分完成: 1.进入首页,先获取数据填充当前ListView(需要缓存) 2.下拉刷新,获取最新数据(无需缓存,直接联网获取) 3.上拉加

classTC的博客 1886

【2026最新】3分钟Windows极速部署OpenClaw,完整可复制命令+全链路避坑指南

很多新手在Windows环境部署OpenClaw时,总会遇到各种玄学问题:WSL环境配置失败、Docker镜像拉取超时、容器启动后无法访问、权限报错、数据丢失……网上大量教程要么是Linux环境的,要么是早已过时的旧版本配置,照着操作不仅没法3分钟部署,反而要花几小时踩坑填坑。

2601_94871597的博客 494

PullToRefresh实现下拉刷新上拉加载更多

Xml布局 &amp;amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;amp;gt; &amp;amp;lt;android.support.constraint.ConstraintLayout xmlns:android=&amp;quot;http://schemas.android.com/apk/res/androi

橘子丶 413

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

android 上拉加载更多第三方控件,采用SwipeFreshLayout+Recyclerview实现下拉刷新和上拉加载更多以及CoordinatorLayout...

之前都是采用PullToRefresh进行下拉刷新和下拉加载,现在采用谷歌自己的控件SwipeFreshLayout,配合Recyclerview来实现这一效果。使用SwipeRefreshLayout可以实现下拉刷新,前提是布局里需要包裹一个可以滑动的子控件,可以是ListView或者Recyclerview,这里我们采用后者,然后在代码里设置OnRefreshListener设置监听,最后在监...

weixin_35545135的博客 580

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

android自定义上拉刷新,Android自定义下拉刷新上拉加载

本文实例为大家分享了Android自定义下拉刷新上拉加载的具体实现步骤,供大家参考,具体内容如下实现的方式是SwipeRefreshLayout + RecyclerView 的VIewType首先看效果:总的思路:布局文件android:layout_marginTop="?attr/actionBarSize"android:id="@+id/one_refresh"android:layou...

weixin_28877739的博客 740

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

XLV上拉加载更多/下拉刷新

public class MainActivity extends AppCompatActivity { private XListView xlv; private List&lt;News.DataBean&gt; list; private MyAdapter adapter; private String url = "http://www.xieast.com/api/news/new...

qq_43169246的博客 162

android pulldown view,Android控件PullRefreshViewGroup实现下拉刷新和上拉加载

本文实例为大家分享了Android实现下拉刷新和上拉加载更多的具体代码,供大家参考,具体内容如下先分享下源码:Android实现下拉刷新和上拉加载更多实现思路:由PullRefreshViewGroup控件来接管标准控件(比如RecyclerView、ListView等)的滑动,调用标准控件的内部方法进行短距离滑动,不再由标准控件自己来处理事件,而完全由PullRefreshViewGroup控件...

weixin_29860267的博客 276

下拉刷新,上拉加载

private Handler handler = new Handler() { private MyListViewAdapter adapter; @Override public void handleMessage(Message msg) { super.handleMessage(msg); switch (msg.what) { // 加载初始

lcrmumu的博客 217

android ListView下拉刷新拉取网络数据

1、xml布局,这里使用第三方开源控件PullToRefreshListView。 .....                 xmlns:ptr="http://schemas.android.com/apk/res-auto"             android:id="@+id/TaskListView"             android:layout_width="m

qq_34519695的博客 2185

pull解析XListView上拉加载下拉刷新

package com.example.yuekao2;import java.io.ByteArrayInputStream; import java.io.IOException; import java.io.InputStreamReader; import java.util.ArrayList; import java.util.List;import org.xmlpull.v

qq_36508024的博客 384

比较美观的ListView下拉刷新上拉加载

package com.example.demo; import java.util.LinkedList; import android.app.Activity; import android.os.AsyncTask; import android.os.Bundle; import android.os.Handler; import android.util.Log; import

475

android xlistview刷新加载源码,An_XListView 上拉加载更多---下拉刷新

2017-08-11_203949.png自定义view包,将XListView,XListViewFooter,XListViewHeader这三个类导入工程里并加载布局文件:xlistview_footer.xml,xlistview_header.xml和图片:xlistview_arrow.png以及strings.xml 配置最后 改包名和R文件(Eclipse 里用 ctrl+shif...

weixin_29439509的博客 121

上拉刷新 下拉加载 及 展示

import android.os.AsyncTask; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.util.Log; import android.view.View; import android.view.ViewGroup; import android

wwe11122的博客 200

上拉刷新 下拉加载

 private void initViews() {        listView = view.findViewById(R.id.pull_to_refresh_listview);        //开启下拉和上啦刷新        listView.setMode(PullToRefreshBase.Mode.BOTH);        //设置监听        listView.s...

liu_qunfeng的博客 334

Android MVVM+RecyclerView+SwipeRefreshLayout实现下拉刷新和上滑加载更多

引入 //ViewModel的创建 implementation 'androidx.activity:activity-ktx:1.1.0'//by viewModels implementation 'androidx.fragment:fragment-ktx:1.2.5'//by viewModels // implementation "androidx.swiperefreshlayout:swiperefreshlayout:1.1.0"//下拉刷新.

张雨的博客 984
上一篇: 记录下,jfeinstein10的SlidingMenu环境的部署
下一篇: 犯了一个菜鸟必备的很郁闷的错误:for循环删除LinkedList集合中元素
ttdevs
博客等级 码龄15年 388粉丝 91原创
评论 5
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值