pulltorefresh框架地址:https://github.com/chrisbanes/Android-PullToRefresh
//代码部分 package com.liushuai.pulltorefreshdemo; import android.os.AsyncTask; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.widget.ArrayAdapter; import android.widget.ListView; import com.handmark.pulltorefresh.library.PullToRefreshBase; import com.handmark.pulltorefresh.library.PullToRefreshListView; import java.util.ArrayList; import java.util.List; public class MainActivity extends AppCompatActivity { private PullToRefreshListView mPullList; private List<String> list = new ArrayList<>(); private ArrayAdapter<String> mAdapter; private String[] mStrings = {"我很善良", "我很温柔", "我是淘女郎", "我是阿里郎", "我是大灰狼", "我是羊羊羊"}; private boolean isxiala = false; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initView(); setEventListener(); initData(); } /** * 初始化控件 */ private void initView() { mPullList = (PullToRefreshListView) findViewById(R.id.pl_refresh); } /** * 设置监听 同时监听上拉与下拉 */ private void setEventListener() { mPullList.setOnRefreshListener(new PullToRefreshBase.OnRefreshListener2<ListView>() { @Override public void onPullDownToRefresh(PullToRefreshBase<ListView> refreshView) { isxiala = true; new GetDataTask().execute(); } @Override public void onPullUpToRefresh(PullToRefreshBase<ListView> refreshView) { // 上提加载触发的事件 ///开启线程模拟调接口填充数据 isxiala = false; new GetDataTask().execute(); } }); } /** * 初始化数据 */ private void initData() { // 设置PullToRefreshListView的模式 mPullList.setMode(PullToRefreshBase.Mode.BOTH); for (int i = 0; i < mStrings.length; i++) { list.add(mStrings[i]); } mAdapter = new ArrayAdapter(this, android.R.layout.simple_list_item_1, list); mPullList.setAdapter(mAdapter); } private class GetDataTask extends AsyncTask<Void, Void, String[]> { @Override protected String[] doInBackground(Void... params) { try { Thread.sleep(2000); } catch (InterruptedException e) { } return null; } @Override protected void onPostExecute(String[] result) { if (isxiala) { list.add(0, "我是新纳入的妾??下拉刷新"); } else if (!isxiala) { list.add(list.size(), "我是让你重回怀抱的妾??上提加载"); } mAdapter.notifyDataSetChanged(); // 调用刷新完成 mPullList.onRefreshComplete(); super.onPostExecute(result); } }}
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
XML布局部分
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" > <com.handmark.pulltorefresh.library.PullToRefreshListView android:id="@+id/pl_refresh" android:layout_width="match_parent" android:layout_height="match_parent"/> </RelativeLayout>