Android -- PullToRefresh应用
生活随笔
收集整理的這篇文章主要介紹了
Android -- PullToRefresh应用
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
PullToRefresh????????????????????????????????????????????????????????????????????????
支持ListView、ExpandableListView、GridView、WebView
下載地址:https://github.com/chrisbanes/Android-PullToRefresh
注意,若是要放到android studio中的話,需要在eclipse中以android studio工程的方式導出。
Code???????????????????????????????????????????????????????????????????????????????????
布局:
<LinearLayout 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:orientation="vertical"tools:context=".MyActivity"><com.handmark.pulltorefresh.library.PullToRefreshListViewandroid:id="@+id/lv_main"android:layout_width="fill_parent"android:layout_height="fill_parent"></com.handmark.pulltorefresh.library.PullToRefreshListView> </LinearLayout>配置:
@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_my);mList = new ArrayList<String>();for (int i = 0; i < mStr.length; i++) {mList.add(mStr[i]);}mListView = (PullToRefreshListView) findViewById(R.id.lv_main); // mListView.setOnRefreshListener(new MyRefreshListener());mListView.setOnRefreshListener(new MyRefreshListener2());mMyAdapter = new MyAdapter();mListView.setAdapter(mMyAdapter);mListView.setMode(PullToRefreshBase.Mode.BOTH);mListView.getLoadingLayoutProxy().setLastUpdatedLabel("setLastUpdatedLabel");mListView.getLoadingLayoutProxy().setLoadingDrawable(getResources().getDrawable(R.drawable.ic_launcher));mListView.getLoadingLayoutProxy().setPullLabel("setPullLabel");mListView.getLoadingLayoutProxy().setRefreshingLabel("setRefreshingLabel");mListView.getLoadingLayoutProxy().setReleaseLabel("setReleaseLabel");}PullToRefreshBase.Mode.BOTH指的是下拉和上拉刷新兩張模式。
class MyRefreshListener implements PullToRefreshBase.OnRefreshListener {@Overridepublic void onRefresh(PullToRefreshBase refreshView) {}}class MyRefreshListener2 implements PullToRefreshBase.OnRefreshListener2 {@Overridepublic void onPullDownToRefresh(PullToRefreshBase refreshView) {mList.clear();for (int i = 0; i < mStr.length; i++) {mList.add(mStr[i]);}new Thread(new MyRunnable()).start();}@Overridepublic void onPullUpToRefresh(PullToRefreshBase refreshView) {for (int i = 0; i < mStr.length; i++) {mList.add(mStr[i]);}new Thread(new MyRunnable()).start();}}這里有兩個監聽器,我們來簡單說一下PullToRefreshBase.OnRefreshListener2 ,很明顯,分別指的是一個是上拉,一個是下拉的刷新的回調。
public class MyActivity extends Activity {private PullToRefreshListView mListView;//pulltorefresh控件private List<String> mList;//存放數據private String[] mStr = {"0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19"};//數據private MyAdapter mMyAdapter;//適配器//一個延時,然后處理private Handler mHandler = new Handler() {@Overridepublic void handleMessage(Message msg) {super.handleMessage(msg);switch (msg.what) {case 1:Log.i("handleMessage", "handleMessage");mListView.onRefreshComplete();mMyAdapter.notifyDataSetChanged();break;}}};@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_my);mList = new ArrayList<String>();//初始化for (int i = 0; i < mStr.length; i++) {mList.add(mStr[i]);//準備數據 }mListView = (PullToRefreshListView) findViewById(R.id.lv_main); // mListView.setOnRefreshListener(new MyRefreshListener());mListView.setOnRefreshListener(new MyRefreshListener2());//設置監聽器mMyAdapter = new MyAdapter();//初始化適配器 mListView.setAdapter(mMyAdapter);mListView.setMode(PullToRefreshBase.Mode.BOTH);//模式為上拉和下拉mListView.getLoadingLayoutProxy().setLastUpdatedLabel("setLastUpdatedLabel");mListView.getLoadingLayoutProxy().setLoadingDrawable(getResources().getDrawable(R.drawable.ic_launcher));//loading的時候的圖片mListView.getLoadingLayoutProxy().setPullLabel("setPullLabel");mListView.getLoadingLayoutProxy().setRefreshingLabel("setRefreshingLabel");mListView.getLoadingLayoutProxy().setReleaseLabel("setReleaseLabel");}class MyRefreshListener implements PullToRefreshBase.OnRefreshListener {@Overridepublic void onRefresh(PullToRefreshBase refreshView) {}}class MyRefreshListener2 implements PullToRefreshBase.OnRefreshListener2 {@Overridepublic void onPullDownToRefresh(PullToRefreshBase refreshView) {mList.clear();for (int i = 0; i < mStr.length; i++) {//添加數據 mList.add(mStr[i]);}new Thread(new MyRunnable()).start();//執行延時 }@Overridepublic void onPullUpToRefresh(PullToRefreshBase refreshView) {for (int i = 0; i < mStr.length; i++) {//添加數據 mList.add(mStr[i]);}new Thread(new MyRunnable()).start();//執行延時 }}class MyAdapter extends BaseAdapter {@Overridepublic int getCount() {return mList.size();}@Overridepublic Object getItem(int i) {return mList.get(i);}@Overridepublic long getItemId(int i) {return i;}@Overridepublic View getView(int i, View view, ViewGroup viewGroup) {if (view == null) {view = LayoutInflater.from(MyActivity.this).inflate(R.layout.item, null);TextView tv = (TextView) view.findViewById(R.id.txt);tv.setText(mList.get(i));} else {TextView tv = (TextView) view.findViewById(R.id.txt);tv.setText(mList.get(i));}return view;}}class MyRunnable implements Runnable {@Overridepublic void run() {try {Thread.sleep(2000);//延時2s} catch (InterruptedException e) {e.printStackTrace();}Log.i("MyRunnable", "MyRunnable");mHandler.sendEmptyMessage(1);}}}我是天王蓋地虎的分割線?????????????????????????????????????????????????????????????
?
?
源代碼:https://github.com/pinguo-yuyidong/Study_Demos/tree/master/PullToReFreshDemo
轉載于:https://www.cnblogs.com/yydcdut/p/4166123.html
總結
以上是生活随笔為你收集整理的Android -- PullToRefresh应用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: html5 下拉刷新(pc+移动网页源码
- 下一篇: java常用简略语含义