布局:
<com.handmark.pulltorefresh.library.PullToRefreshListView
android:id="@+id/pulltorefreshlistview"
android:layout_width="wrap_content"
android:layout_height="wrap_content"></com.handmark.pulltorefresh.library.PullToRefreshListView>
代码:
public class MainActivity extends AppCompatActivity {
//初始数据
private String[] mStrings = {"Abbaye de Belloc", "Abbaye du Mont des Cats", "Abertam", "Abondance", "Ackawi"};
private PullToRefreshListView pulltorefreshlistview;
private LinkedList<String> list;
private ArrayAdapter<String> arrayAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//获取id
pulltorefreshlistview = (PullToRefreshListView) findViewById(R.id.pulltorefreshlistview);
//默认可以下拉, 设置BOTH后也可以上拉
pulltorefreshlistview.setMode(PullToRefreshBase.Mode.BOTH);
//不能直接添加头布局,需要转一下
ListView listview = pulltorefreshlistview.getRefreshableView();
//添加头布局
listview.addHeaderView();
//创建集合
list = new LinkedList<>();
//往集合中添加数据
list.addAll(Arrays.asList(mStrings));
//创建适配器
arrayAdapter = new ArrayAdapter<String>(MainActivity.this,android.R.layout.simple_list_item_1,list);
//添加适配器
pulltorefreshlistview.setAdapter(arrayAdapter);
//设置监听,PullToRefreshBase.OnRefreshListener2
pulltorefreshlistview.setOnRefreshListener(new PullToRefreshBase.OnRefreshListener2<ListView>() {
@Override
public void onPullDownToRefresh(PullToRefreshBase<ListView> refreshView) {
new MAsyncTask().execute();
}
@Override
public void onPullUpToRefresh(PullToRefreshBase<ListView> refreshView) {
new MAsyncTask2().execute();
}
});
}
//上拉刷新 class MAsyncTask extends AsyncTask<String,Void,String>{
@Override protected String doInBackground(String... strings) {
try {
Thread.sleep(1000); }
catch (InterruptedException e) {
e.printStackTrace(); }
return null; }
@Override
protected void onPostExecute(String s) {
super.onPostExecute(s);
//添加一条数据
list.addFirst("refresh item haha ...");
//刷新适配器
arrayAdapter.notifyDataSetChanged();
//让刷新UI隐藏
pulltorefreshlistview.onRefreshComplete(); } }
//下拉加载
class MAsyncTask2 extends AsyncTask<String,Void,String>{
@Override
protected String doInBackground(String... strings) {
try { Thread.sleep(1000); }
catch (InterruptedException e) {
e.printStackTrace(); }
return null; }
@Override
protected void onPostExecute(String s) {
super.onPostExecute(s);
list.addLast("loadMore Item haha1 ....");
list.addLast("loadMore Item haha2 ....");
list.addLast("loadMore Item haha3 ....");
arrayAdapter.notifyDataSetChanged();
pulltorefreshlistview.onRefreshComplete(); }
}}