Android 下拉刷新控件Android-PullToRefresh
需要用到一个开源库 Android-PullToRefresh
https://github.com/chrisbanes/Android-PullToRefresh
------------------------------------------------------------
工程代码:
开源库: LearnPullToRefreshControls.zip
使用Demo: UsingLsitViewRefresh.zip
------------------------------------------------------------
开源库结构:
三个库:
library
PullToRefreshListFragment
PullToRefreshViewPager
官方Demo:
LauncherActivity
------------------------------------------------------------
Android-PullToRefresh支持多种控件
------------------------------------------------------------
举个使用ListView的例子:
先定义layout
<com.handmark.pulltorefresh.library.PullToRefreshListView android:id="@+id/refreshLv" android:layout_width="fill_parent" android:layout_height="fill_parent" />
在Java中使用PullToRefreshListView
PullToRefreshListView lv; ArrayAdapter<String> adapter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); List<String> arr = new ArrayList<String>(); arr.add("android"); arr.add("javaee"); arr.add("python"); lv = (PullToRefreshListView) findViewById(R.id.refreshLv); adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, arr); lv.setAdapter(adapter); lv.setOnRefreshListener(new OnRefreshListener<ListView>() { @Override public void onRefresh(PullToRefreshBase<ListView> refreshView) { // TODO Auto-generated method stub new AsyncTask<Void, Void, Void>() { @Override protected Void doInBackground(Void... params) { try { Thread.sleep(3000); // 模拟网络通信 } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } return null; } protected void onPostExecute(Void result) { adapter.addAll("object-c", "html5", "javascript"); lv.onRefreshComplete(); }; }.execute(); } }); }
效果如下