PullRefresh - 一個支持下拉刷新和上拉刷新的控件
一個支持下拉刷新和上拉刷新的控件,并且支持自定義下拉頭和上拉頭,可選擇只使用下拉頭或者只使用上拉頭
Demo
下拉刷新
上拉刷新
Usage
導入三個文件
1.PullRefresh.java 2.HeaderHolder.java 3.FooterHolder.java
自定義header.xml和footer.xml
使用的地方
<com.ylqhust.pullrefresh.PullRefresh android:id="@+id/pullrefresh" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <include layout="@layout/header"/> <ListView android:id="@+id/listview" android:layout_width="match_parent" android:layout_height="match_parent"> </ListView> <include layout="@layout/footer"/> </com.ylqhust.pullrefresh.PullRefresh>
代碼部分
pullRefresh = (PullRefresh) findViewById(R.id.pullrefresh); listView = (ListView) findViewById(R.id.listview); View header = findViewById(R.id.header); View footer = findViewById(R.id.footer); PullRefresh.CallBack callBack = new PullRefresh.CallBack() { @Override public boolean CanotPullDown() { if (listView.getFirstVisiblePosition() == 0) { View first = listView.getChildAt(0); if (first.getTop() == 0) return true; } return false; } @Override public boolean CanotPullUp() { if (listView.getLastVisiblePosition() == listView.getCount() - 1) { View last = listView.getChildAt(listView.getChildCount() - 1); if (Math.abs(listView.getBottom() - last.getBottom()) < 2) return true; } return false; } }; PullRefresh.Task task = new PullRefresh.Task() { @Override public void HeaderTask() { new Thread() { @Override public void run() { try { sleep(3000); } catch (InterruptedException e) { e.printStackTrace(); } runOnUiThread(new Runnable() { @Override public void run() { HeaderTaskFinish(); } }); } }.start(); } @Override public void FooterTask() { new Thread() { @Override public void run() { try { sleep(3000); } catch (InterruptedException e) { e.printStackTrace(); } runOnUiThread(new Runnable() { @Override public void run() { FooterTaskFinish(); } }); } }.start(); } }; //使用頭部和尾部 pullRefresh.UseAll(callBack,header, listView,footer, new SimpleHeaderHolder(this), new SimpleFooterHolder(this),task ); //只使用頭部 //pullRefresh.UseHeader(callBack,header,listView,new SimpleHeaderHolder(this),task); //只使用尾部 //pullRefresh.UseFooter(callBack,footer,listView,new SimpleFooterHolder(this),task); List<String> stringList = new ArrayList<String>(); for(int i=0;i<20;i++){ stringList.add("String:"+i); } adapter = new Adapter(this,stringList); listView.setAdapter(adapter); } private void HeaderTaskFinish() { if (tag%2==0){ pullRefresh.headerEndSuccess(); adapter.addDataToHeader(); adapter.notifyDataSetChanged(); } else{ pullRefresh.headerEndFailed(); } tag++; } private void FooterTaskFinish() { if (tag%2==0){ pullRefresh.footerEndSuccess(); adapter.addDataToFooter(); adapter.notifyDataSetChanged(); } else{ pullRefresh.footerEndFailed(); } tag++; }
本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!