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. JavaScript 函数的4种调用方法

    JavaScript 函数有 4 种调用方式. 每种方式的不同方式在于 this 的初始化. 作为一个函数调用 function myFunction(a, b) { return a * b; } ...

  2. hive与hbase的整合

    Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供完整的sql查询功能,可以将sql语句转换为MapReduce任务进行运行.其优点学习成本低,可以通过类S ...

  3. Android 手势识别—缩放

    上一篇讲解了手势识别中的点击和双击事件的识别,用到的是GestureDetector类和GestureDetectorCompat类,用于监听用户触摸屏幕中的简单动作. 缩放 基本用法如下,可以通过缩 ...

  4. Linux的文件的打包(tar方法)

    Linux的文件的打包(tar方法) tar -c: 建立压缩档案 -x:解压 -t:查看内容 -r:向压缩归档文件末尾追加文件 -u:更新原压缩包中的文件 这五个是独立的命令,压缩解压都要用到其中一 ...

  5. ES6-let、const和块级作用域

    1.介绍 总的来说,ES6是在ES2015的基础上改变了一些书写方式,开放了更多API,这样做的目的最终还是为了贴合实际开发的需要.如果说一门编程语言的诞生是天才的构思和实现,那它的发展无疑就是不断填 ...

  6. Django之模型系统

    Django模型简介 Django 模型是与数据库相关的,与数据库相关的代码一般写在 models.py 中 Django 支持 sqlite3, MySQL, oracle,PostgreSQL等数 ...

  7. 在Windows家里杀死一个偷端口的家伙

    今天,写项目了,写了好多代码,然后运行成功,但是返回的信息啥的还有代码整体的逻辑有点问题,于是就review了代码,改了些东西,然后再次启动服务,但是,问题来了:Address already in ...

  8. Go语言学习笔记十二: 范围(Range)

    Go语言学习笔记十二: 范围(Range) rang这个关键字主要用来遍历数组,切片,通道或Map.在数组和切片中返回索引值,在Map中返回key. 这个特别像python的方式.不过写法上比较怪异使 ...

  9. SPP(Spatial Pyramid Pooling)详解

    一直对Fast RCNN中ROI Pooling层不解,不同大小的窗口输入怎么样才能得到同样大小的窗口输出呢,今天看到一篇博文讲得挺好的,摘录一下,方便查找. Introduction 在一般的CNN ...

  10. linux tar 命令

    tar [-cxtzjvfpPN] 文件与目录 ....参数:-c :建立一个压缩文件的参数指令(create 的意思):-x :解开一个压缩文件的参数指令!-t :查看 tarfile 里面的文件! ...