Android-PullToRefresh下拉刷新库基本用法
来源:互联网 发布:中山大学软件工程 知乎 编辑:程序博客网 时间:2024/06/05 18:56
PullToRefresh是一套实现非常好的下拉刷新库,它支持:
ListView
ExpandableListView
GridView
WebView
ScrollView
HorizontalScrollView
ViewPager
等多种常用的需要刷新的View类型,而且使用起来也十分方便。
(下载地址:https://github.com/chrisbanes/Android-PullToRefresh)
PullToRefresh基本用法:
1、在布局文件中添加PullToRefresh控件,比如PullToRefreshListView;
2、在Activity中,设置监听器OnRefreshListener以响应用户下拉操作;
3、在监听器的onRefresh()方法中执行数据刷新操作,可以通过AsyncTask来实现;
4、在AsyncTask中获取到数据后,记得调用onRefreshComplete()方法通知PullToRefresh控件数据已获取完毕,可以结束刷新操作。
实例:PullToRefreshDemo
运行效果:
代码清单:
布局文件:activity_main.xml
Java源代码文件:MainActivity.java
实例源代码下载 http://download.csdn.net/detail/hantangsongming/8336075
ListView
ExpandableListView
GridView
WebView
ScrollView
HorizontalScrollView
ViewPager
等多种常用的需要刷新的View类型,而且使用起来也十分方便。
(下载地址:https://github.com/chrisbanes/Android-PullToRefresh)
PullToRefresh基本用法:
1、在布局文件中添加PullToRefresh控件,比如PullToRefreshListView;
2、在Activity中,设置监听器OnRefreshListener以响应用户下拉操作;
3、在监听器的onRefresh()方法中执行数据刷新操作,可以通过AsyncTask来实现;
4、在AsyncTask中获取到数据后,记得调用onRefreshComplete()方法通知PullToRefresh控件数据已获取完毕,可以结束刷新操作。
实例:PullToRefreshDemo
运行效果:
视图结构
代码清单:
布局文件:activity_main.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context=".MainActivity" > <com.handmark.pulltorefresh.library.PullToRefreshListView android:id="@+id/pull_to_refresh_listview" android:layout_height="fill_parent" android:layout_width="fill_parent" /></RelativeLayout>
Java源代码文件:MainActivity.java
package com.rainsong.pulltorefreshdemo;import java.util.Arrays;import java.util.LinkedList;import android.app.Activity;import android.os.AsyncTask;import android.os.Bundle;import android.text.format.DateUtils;import android.view.Menu;import android.widget.ArrayAdapter;import android.widget.ListView;import com.handmark.pulltorefresh.library.PullToRefreshBase;import com.handmark.pulltorefresh.library.PullToRefreshBase.OnRefreshListener;import com.handmark.pulltorefresh.library.PullToRefreshListView;public class MainActivity extends Activity { private PullToRefreshListView mPullToRefreshListView; private LinkedList<String> mListItems; private ArrayAdapter<String> mAdapter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // Set a listener to be invoked when the list should be refreshed. mPullToRefreshListView = (PullToRefreshListView) findViewById(R.id.pull_to_refresh_listview); mPullToRefreshListView.setOnRefreshListener(new OnRefreshListener<ListView>() { @Override public void onRefresh(PullToRefreshBase<ListView> refreshView) { String label = DateUtils.formatDateTime(getApplicationContext(), System.currentTimeMillis(), DateUtils.FORMAT_SHOW_TIME | DateUtils.FORMAT_SHOW_DATE | DateUtils.FORMAT_ABBREV_ALL); // Update the LastUpdatedLabel refreshView.getLoadingLayoutProxy().setLastUpdatedLabel(label); // Do work to refresh the list here. new GetDataTask().execute(); } }); ListView actualListView = mPullToRefreshListView.getRefreshableView(); 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) { // Simulates a background job. try { Thread.sleep(4000); } catch (InterruptedException e) { } return mStrings; } @Override protected void onPostExecute(String[] result) { mListItems.addFirst("Added after refresh..."); mAdapter.notifyDataSetChanged(); // Call onRefreshComplete when the list has been refreshed. mPullToRefreshListView.onRefreshComplete(); super.onPostExecute(result); } } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); return true; } private String[] mStrings = { "John", "Michelle", "Amy", "Kim", "Mary", "David", "Sunny", "James", "Maria", "Michael", "Sarah", "Robert", "Lily", "William", "Jessica", "Paul", "Crystal", "Peter", "Jennifer", "George", "Rachel", "Thomas", "Lisa", "Daniel", "Elizabeth", "Kevin" };}
实例源代码下载 http://download.csdn.net/detail/hantangsongming/8336075
8 1
- Android-PullToRefresh下拉刷新库基本用法
- Android-PullToRefresh下拉刷新库基本用法
- Android-PullToRefresh下拉刷新库基本用法
- Android-PullToRefresh下拉上拉刷新的库基本用法
- android pulltorefresh 下拉刷新
- android Android-PullToRefresh 下拉刷新
- android Android-PullToRefresh 下拉刷新
- android控件 下拉刷新pulltorefresh
- android 之 下拉刷新PullToRefresh
- android 下拉刷新菜单库 johannilsson/android-pulltorefresh
- Android-PullToRefresh库实现上拉刷新下拉加载
- Android下拉刷新组件Android PullToRefresh使用方法
- android 控件 下拉刷新 Android-PullToRefresh
- android 控件 下拉刷新 android-pulltorefresh
- android ActionBar-PullToRefresh 下拉刷新的使用方法
- Android-PullToRefresh:下拉刷新和加载更多
- Android下拉刷新框架PullToRefresh使用小结
- Android-设置PullToRefresh下拉刷新样式
- 用Sumblime Text 快速浏览 HTML 代码
- 【mfc】鼠标、键盘响应事件
- 字符串-01. 在字符串中查找指定字符(15)
- 线程的生命周期
- This account is currently not available
- Android-PullToRefresh下拉刷新库基本用法
- SplashActivity页面 android:scaleType="centerCrop" 属性 用于 ImageView填满整个SplashActivity
- 语音服务器端内存泄露
- Java V01 20150107
- Android Service AIDL
- activity和fragment通过接口相互传值
- play framework 中使用线程 及 锁的问题
- 黑马程序员——高新技术---部分JDK1.5新特性及枚举--(冲刺复习知识补充)
- socket编程中相关数据结构