您的位置:首页 > 移动开发 > Android开发

Android-PullToRefresh库实现上拉刷新下拉加载

2015-07-18 17:03 766 查看
Library下载地址:

https://github.com/chrisbanes/Android-PullToRefresh

版本:Android-PullToRefresh-2.1.1

(1) 设置Listview

layout文件中定义PullToRefreshListView

Xml代码


<com.handmark.pulltorefresh.library.PullToRefreshListView

android:id="@+id/list_view"

android:layout_width="match_parent"

android:layout_height="match_parent" />

(2)设置Mode

Java代码


PullToRefreshListView mListView = (PullToRefreshListView) findViewById(R.id.list_view);

mListView.setMode(Mode.BOTH);

Mode.BOTH:同时支持上拉下拉
Mode.PULL_FROM_START:只支持下拉Pulling Down
Mode.PULL_FROM_END:只支持上拉Pulling Up

(3)实现Listener

如果Mode设置成Mode.BOTH,需要设置刷新Listener为OnRefreshListener2,并实现onPullDownToRefresh()、onPullUpToRefresh()两个方法。

如果Mode设置成Mode.PULL_FROM_START或Mode.PULL_FROM_END,需要设置刷新Listener为OnRefreshListener,同时实现onRefresh()方法。当然也可以设置为OnRefreshListener2,但是Mode.PULL_FROM_START的时候只调用onPullDownToRefresh()方法,Mode.PULL_FROM的时候只调用onPullUpToRefresh()方法.

(4)举例

Java代码


public class MainActivity extends Activity {



private ArrayList<String> mListItems;

private PullToRefreshListView mListView;

private SampleListAdapter mAdapter;



@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.sample);



// 设置初期数据

mListItems = new ArrayList<String>();

for (int i = 1; i <= 10; i++) {

mListItems.add("Item " + Integer.toString(i));

}



// 设置ListView

mListView = (PullToRefreshListView) findViewById(R.id.list_view);

mAdapter = new SampleListAdapter();

mListView.setAdapter(mAdapter);



// 设置PullToRefresh

mListView.setMode(Mode.BOTH);

mListView.setOnRefreshListener(new OnRefreshListener2<ListView>(){



// 下拉Pulling Down

@Override

public void onPullDownToRefresh(PullToRefreshBase<ListView> refreshView) {

// 下拉的时候数据重置

mListItems = new ArrayList<String>();

for (int i = 1; i <= 10; i++) {

mListItems.add("Item " + Integer.toString(i));

}

mAdapter.notifyDataSetChanged();



new FinishRefresh().execute();

}



// 上拉Pulling Up

@Override

public void onPullUpToRefresh(PullToRefreshBase<ListView> refreshView) {

// 上拉的时候添加选项

int count = mListItems.size();

mListItems.add("Item " + Integer.toString(++count));

mAdapter.notifyDataSetChanged();



new FinishRefresh().execute();

}



});



}



private class SampleListAdapter extends BaseAdapter {



@Override

public int getCount() {

return mListItems.size();

}



@Override

public Object getItem(int index) {

return mListItems.get(index);

}



@Override

public long getItemId(int index) {

return index;

}



@Override

public View getView(int index, View view, ViewGroup arg2) {

if(view == null){

LayoutInflater inflater = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);

view = inflater.inflate(R.layout.list_item, null);

}

TextView textView = (TextView)view.findViewById(R.id.listItemText);

textView.setText(mListItems.get(index));

return view;

}

}



private class FinishRefresh extends AsyncTask<Void, Void, Void>{

@Override

protected Void doInBackground(Void... params) {

return null;

}



@Override

protected void onPostExecute(Void result){

mListView.onRefreshComplete();

}

}

}

初期:




上拉:




上拉后:




下拉:




下拉后:




PullToRefreshSample.zip (530.7 KB)
下载次数: 744

查看图片附件
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: