您的位置:首页 > 编程语言

PullToRefresh代码案例

2017-09-17 20:34 169 查看
//Layou布局

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.bwie.ptf.MainActivity">

<com.handmark.pulltorefresh.library.PullToRefreshListView
android:id="@+id/ptf"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</RelativeLayout>

//MainActivity假数据模拟

package com.bwie.ptf;

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.LinkedList;

public class MainActivity extends AppCompatActivity {

private PullToRefreshListView ptf;
private LinkedList<String> list = new LinkedList<String>();
private ArrayAdapter<String> adapter;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//获取控件id
ptf = (PullToRefreshListView) findViewById(R.id.ptf);
//本来只可以下拉,现在也可以上拉
ptf.setMode(PullToRefreshBase.Mode.BOTH);
initData();//加载数据
ptf.setOnRefreshListener(new PullToRefreshBase.OnRefreshListener2<ListView>() {
@Override
public void onPullDownToRefresh(PullToRefreshBase<ListView> refreshView) {
//下拉刷新的方法
new MyAsynTask().execute();
}

@Override
public void onPullUpToRefresh(PullToRefreshBase<ListView> refreshView) {
//上拉加载的方法
new MyAsynTask2().execute();
}
});
}

private void initData() {
for (int i = 0; i < 8; i++) {
list.add("我是第" + i + "条数据");
}
adapter = new ArrayAdapter<>(MainActivity.this, android.R.layout.simple_list_item_1, list);
ptf.setAdapter(adapter);
}

class MyAsynTask extends AsyncTask<Void, Void, String> {

@Override
protected String doInBackground(Void... voids) {
try {
Thread.sleep(2000);

4000
} catch (InterruptedException e) {
e.printStackTrace();
}
return null;
}

@Override
protected void onPostExecute(String s) {
super.onPostExecute(s);
list.addFirst("我是新加的数据");
adapter.notifyDataSetChanged();
ptf.onRefreshComplete();
}
}

class MyAsynTask2 extends AsyncTask<Void, Void, String> {

@Override
protected String doInBackground(Void... voids) {
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
e.printStackTrace();
}
return null;
}

@Override
protected void onPostExecute(String s) {
super.onPostExecute(s);
list.addLast("我是加载出的新数据1");
list.addLast("我是加载出的新数据2");
adapter.notifyDataSetChanged();
ptf.onRefreshComplete();
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: