您好,登錄后才能下訂單哦!
小編給大家分享一下如何實現下拉刷新及滑動到底部加載更多的ListView,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
本文主要介紹可同時實現下拉刷新及滑動到底部加載更多的ListView的使用。
該ListView優點包括:a. 可自定義下拉響應事件(如下拉刷新) b.可自定義滾動到底部響應的事件(如滑動到底部加載更多) c.可自定義豐富的樣式 d.高效(若下拉樣式關閉不會加載其布局,同listView效率一致) e. 豐富的設置。
本文可運行APK地址可見TrineaAndroidDemo.apk,可運行代碼地址可見DropDownListViewDemo@Google Code,效果圖如下:
1、引入公共庫
引入TrineaAndroidCommon@GoogleCode作為你項目的library,或是自己抽取其中的DropDownListView部分使用
2、在layout中定義
將布局中的ListView標簽換成cn.trinea.android.common.view.DropDownListView標簽
并加上自定義屬性的命名空間xmlns:listViewAttr="http://schemas.android.com/apk/res/cn.trinea.android.demo",其中cn.trinea.android.demo需要用自己的包名替換。如何自定義屬性及其命名空間可見本文***。xml代碼如下:
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:listViewAttr="http://schemas.android.com/apk/res/cn.trinea.android.demo" android:layout_width="match_parent" android:layout_height="match_parent" > <cn.trinea.android.common.view.DropDownListView android:id="@+id/list_view" android:layout_width="match_parent" android:layout_height="wrap_content" android:drawSelectorOnTop="false" android:paddingBottom="@dimen/dp_40" listViewAttr:isDropDownStyle="true" listViewAttr:isOnBottomStyle="true" listViewAttr:isAutoLoadOnBottom="true" /> </RelativeLayout>
DropDownListView自定義了三個boolean屬性
<declare-styleable name="drop_down_list_attr"> <attr name="isDropDownStyle" format="boolean" /> <attr name="isOnBottomStyle" format="boolean" /> <attr name="isAutoLoadOnBottom" format="boolean" /> </declare-styleable>
isDropDownStyle表示是否允許下拉樣式,java代碼中可自定義下拉listener,表示需要完成的任務
isOnBottomStyle表示是否允許底部樣式,java代碼中可自定義滾動到底部的listener,表示需要完成的任務
isAutoLoadOnBottom表示是否允許滾動到底部時自動執行對應listener,僅在isOnBottomStyle為true時有效
PS:如果isDropDownStyle或isOnBottomStyle為false,并不會加載對應的布局,所以性能同ListView一樣
3、在Java類中調用
通過setOnDropDownListener設置下拉的事件,不過需要在事件結束時手動調用onDropDownComplete恢復狀態
通過setOnBottomListener設置滾動到底部的事件,不過需要在事件結束時手動調用onBottomComplete恢復狀態,示例代碼如下:
/** * DropDownListViewDemo * * @author Trinea 2013-6-1 */ public class DropDownListViewDemo extends BaseActivity { private LinkedList<String> listItems = null; private DropDownListView listView = null; private ArrayAdapter<String> adapter; private String[] mStrings = { "Aaaaaa", "Bbbbbb", "Cccccc", "Dddddd", "Eeeeee", "Ffffff", "Gggggg", "Hhhhhh", "Iiiiii", "Jjjjjj", "Kkkkkk", "Llllll", "Mmmmmm", "Nnnnnn", }; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState, R.layout.drop_down_listview_demo); listView = (DropDownListView)findViewById(R.id.list_view); // set drop down listener listView.setOnDropDownListener(new OnDropDownListener() { @Override public void onDropDown() { new GetDataTask(true).execute(); } }); // set on bottom listener listView.setOnBottomListener(new OnClickListener() { @Override public void onClick(View v) { new GetDataTask(false).execute(); } }); listItems = new LinkedList<String>(); listItems.addAll(Arrays.asList(mStrings)); adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, listItems); listView.setAdapter(adapter); } private class GetDataTask extends AsyncTask<Void, Void, String[]> { private boolean isDropDown; public GetDataTask(boolean isDropDown){ this.isDropDown = isDropDown; } @Override protected String[] doInBackground(Void... params) { try { Thread.sleep(1000); } catch (InterruptedException e) { ; } return mStrings; } @Override protected void onPostExecute(String[] result) { if (isDropDown) { listItems.addFirst("Added after drop down"); adapter.notifyDataSetChanged(); // should call onDropDownComplete function of DropDownListView at end of drop down complete. SimpleDateFormat dateFormat = new SimpleDateFormat("MM-dd HH:mm:ss"); listView.onDropDownComplete(getString(R.string.update_at) + dateFormat.format(new Date())); } else { listItems.add("Added after on bottom"); adapter.notifyDataSetChanged(); // should call onBottomComplete function of DropDownListView at end of on bottom complete. listView.onBottomComplete(); } super.onPostExecute(result); } } }
4、高級接口設置
5、樣式設置(自定義header和footer信息)
以上是“如何實現下拉刷新及滑動到底部加載更多的ListView”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。