github:  https://github.com/liaohuqiu/android-Ultra-Pull-To-Refresh

<in.srain.cube.views.ptr.PtrFrameLayout
android:id="@+id/ptr"
android:layout_width="match_parent"
android:layout_height="match_parent"> <ListView
android:id="@+id/lv"
android:layout_width="match_parent"
android:layout_height="match_parent"></ListView>
</in.srain.cube.views.ptr.PtrFrameLayout>
public class MainActivity extends AppCompatActivity {

    private List<String> list;
private ArrayAdapter<String> adapter;
private PtrFrameLayout ptrFrameLayout;
private Handler mHandler = new Handler() {
@Override
public void handleMessage(Message msg) {
//设置刷新完毕,取消刷新动画
ptrFrameLayout.refreshComplete();
adapter.notifyDataSetChanged();
}
}; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ptrFrameLayout = (PtrFrameLayout) findViewById(R.id.ptr);
ListView listView = (ListView) findViewById(R.id.lv);
initData(); //1.默认经典头布局
// PtrClassicDefaultHeader defaultHeader = new PtrClassicDefaultHeader(this);
// 给Ptr添加头布局
// ptrFrameLayout.setHeaderView(defaultHeader);
// 使头布局的状态和刷新状态同步
// ptrFrameLayout.addPtrUIHandler(defaultHeader);
//2.模仿MD风格的头布局
// MaterialHeader materialHeader = new MaterialHeader(this);
//设置MD风格动画的颜色
// materialHeader.setColorSchemeColors(new int[]{Color.RED, Color.GREEN, Color.BLUE});
// ptrFrameLayout.setHeaderView(materialHeader);
// ptrFrameLayout.addPtrUIHandler(materialHeader);
//3.闪动文字的头布局
StoreHouseHeader storeHouseHeader = new StoreHouseHeader(this);
//设置加载数据时显示的字符串,文本只支持0-9,英文字符
storeHouseHeader.initWithString("999Loading...");
//设置头布局的背景颜色
storeHouseHeader.setBackgroundColor(Color.BLACK);
//设置文本的颜色
storeHouseHeader.setTextColor(Color.WHITE);
// storeHouseHeader.setDropHeight(300);
ptrFrameLayout.setHeaderView(storeHouseHeader);
ptrFrameLayout.addPtrUIHandler(storeHouseHeader);
adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, list);
listView.setAdapter(adapter);
//设置下拉刷新监听
ptrFrameLayout.setPtrHandler(new PtrDefaultHandler() {
//在这里进行数据加载
@Override
public void onRefreshBegin(PtrFrameLayout frame) {
new Thread(new Runnable() {
@Override
public void run() {
list.add(, "王五");
SystemClock.sleep();
mHandler.sendEmptyMessage();
}
}).start();
}
});
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Toast.makeText(MainActivity.this, "position:" + position, Toast.LENGTH_SHORT).show();
}
});
// ptrFrameLayout.setPtrHandler(new PtrHandler() {
//返回控件是否可以执行下拉刷新操作
// @Override
// public boolean checkCanDoRefresh(PtrFrameLayout frame, View content, View header) {
// return true;
// }
//
// @Override
// public void onRefreshBegin(PtrFrameLayout frame) {
//
// }
// });
} private void initData() {
list = new ArrayList<>();
for (int i = ; i < ; i++) {
list.add("lisi:" + i);
}
}
}

UltraPtr下拉刷新的更多相关文章

  1. Android下拉刷新控件android-Ultra-Pull-To-Refresh 使用

    一.gitHub地址及介绍 https://github.com/liaohuqiu/android-Ultra-Pull-To-Refresh android-Ultra-Pull-To-Refre ...

  2. 封装RecyclerViewAdapter实现RecyclerView下拉刷新上拉载入很多其它

    实现 关于下拉刷新使用的是github上的项目Ultra Pull To Refresh项目. gradle依赖例如以下: compile 'in.srain.cube:ultra-ptr:1.0.1 ...

  3. Android SwipeRefreshLayout 下拉刷新——Hi_博客 Android App 开发笔记

    以前写下拉刷新 感觉好费劲,要判断ListView是否滚到顶部,还要加载头布局,还要控制 头布局的状态,等等一大堆.感觉麻烦死了.今天学习了SwipeRefreshLayout 的用法,来分享一下,有 ...

  4. 带你实现开发者头条APP(五)--RecyclerView下拉刷新上拉加载

    title: 带你实现开发者头条APP(五)--RecyclerView下拉刷新上拉加载 tags: -RecyclerView,下拉刷新,上拉加载更多 grammar_cjkRuby: true - ...

  5. listview下拉刷新和上拉加载更多的多种实现方案

    listview经常结合下来刷新和上拉加载更多使用,本文总结了三种常用到的方案分别作出说明. 方案一:添加头布局和脚布局        android系统为listview提供了addfootview ...

  6. Xamarin. Android实现下拉刷新功能

    PS:发现文章被其他网站或者博客抓取后发表为原创了,给图片加了个水印 下拉刷新功能在安卓和iOS中非常常见,一般实现这样的功能都是直接使用第三方的库,网上能找到很多这样的开源库.然而在Xamarin. ...

  7. android使用PullToRefresh实现上拉加载和下拉刷新效果

    其实很早前就在博客园中也写过官方的下拉刷新控件SwipeRefreshLayout,但是这个控件仅仅支持下拉刷新,用起来还算可以.然而在我们实际开发应用中,很多地方都不止有下拉刷新,而且还有上拉加载的 ...

  8. android官方下拉刷新控件SwipeRefreshLayout的使用

    可能开发安卓的人大多数都用过很多下拉刷新的开源组件,但是今天用了官方v4支持包的SwipeRefreshLayout觉得效果也蛮不错的,特拿出来分享. 简介:SwipeRefreshLayout组件只 ...

  9. 分页插件思想:pc加载更多功能和移动端下拉刷新加载数据

    感觉一个人玩lol也没意思了,玩会手机,看到这个下拉刷新功能就写了这个demo! 这个demo写的比较随意,咱不能当做插件使用,基本思想是没问题的,要用就自己封装吧! 直接上代码分析下吧! 布局: & ...

随机推荐

  1. LeetCode题解-23 合并K个排序链表 Hard

    合并 k 个排序链表,返回合并后的排序链表.请分析和描述算法的复杂度. 示例: 输入: [ 1->4->5, 1->3->4, 2->6 ] 输出: 1->1-&g ...

  2. tensorflow进阶篇-4(损失函数1)

    L2正则损失函数(即欧拉损失函数),L2正则损失函数是预测值与目标函数差值的平方和.L2正则损失函数是非常有用的损失函数,因为它在目标值附近有更好的曲度,并且离目标越近收敛越慢: # L = (pre ...

  3. Qt: QTimer和QThread

    让QTimer 跑在其他线程. 一般写法如下. 1. 在main thread中为worker thread指定定时器. QThread* thread = new QThread(this); th ...

  4. jdbc调试sql语句方法

    在main命令行输入三个参数到oracle 的 dept2表(自己建的 和dept一样(deptno,dname,loc)),插入到数据库中去.通过本例子,学习在java里调试sql的方法. 写完sq ...

  5. Spring中的BeanPostProcessor

    一.何谓BeanProcessor BeanPostProcessor是SpringFramework里非常重要的核心接口之一,我先贴出一段源代码: /* * Copyright 2002-2015 ...

  6. Base64加密解密工具类

    使用Apache commons codec类Base64进行加密解密 maven依赖 <dependency> <groupId>commons-codec</grou ...

  7. MVC与MVVM设计模式理解

    MVC设计模式(View和Model之间不能直接通信) MVC是一种架构模式,M表示Model,V表示视图View,C表示控制器Controller: Model负责存储.定义.操作数据.从网络中获取 ...

  8. 关于gcc编译器中函数不用进行原型声明的解释

    经过大量实验和参考网上的说法得出一个结论: gcc编译器中,函数可以不用提前进行原型声明,编译器会把函数调用同时认为是声明.需要注意的是,由于函数调用的时候并没有写明函数返回值,这是gcc把调用当成声 ...

  9. 【设计模式】观察者模式 Observer Pattern

    定义:观察者模式定义了对象之间的一对多依赖.当“主题”(Object)状态改变事,所有依赖它的“观察者”(Observer)都会受到通知并自动更新.主题支持观察者订阅和退订. 观察者模式提供了一种对象 ...

  10. 编写高质量JavaScript代码的68个有效方法

    简介: <Effective JavaScript:编写高质量JavaScript代码的68个有效方法>共分为7章,分别涵盖JavaScript的不同主题.第1章主要讲述最基本的主题,如版 ...