android的下拉刷新和上拉加载有很多的第三方,这里实现的是最简单的上来加载,比较简陋
首先定义一个布局文件:
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical">
<ListView
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:id="@+id/thrid_list"
android:cacheColorHint="#00000000">
</ListView>
</LinearLayout>
lis=(ListView)view.findViewById(R.id.thrid_list);
再者,我们为lis设置监听器
lis.setOnScrollListener(new AbsListView.OnScrollListener() {
@Override
public void onScrollStateChanged(AbsListView arg0, int arg1) {
// TODO Auto-generated method stub
//System.out.println();
//滑动到底部,并且停了下来
if(is_split&&arg1==OnScrollListener.SCROLL_STATE_IDLE){
//Toast.makeText(getActivity(), "分页中.....", 1000).show();
//开启异步任务
MyTask task=new MyTask();
task.execute(pagenum);
}
}
@Override
public void onScroll(AbsListView arg0, int arg1, int arg2, int arg3) {
// TODO Auto-generated method stub
//我们时刻计算着是否滑动到底部
if((arg2+arg1)==arg3){
is_split=true;
return;
}
is_split=false;
}
});
下面是我的异步任务,只是模拟从网络上获取数据
private class MyTask extends AsyncTask<Integer,String,String>{
//获取数据
@Override
protected String doInBackground(Integer... arg0) {
// TODO Auto-generated method stub
int pagenum=arg0[0];
//这里的netdata相当于一个数据源,根据每次需要显示的页码,获取相应的数据
List<String> getdata=netdata.subList(pagenum*pagecount,pagenum*pagecount+pagecount);
//把getdata添加到本地的
ContentFragmentThird.this.data.addAll(getdata);
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}
@Override
protected void onCancelled() {
// TODO Auto-generated method stub
super.onCancelled();
}
@Override
protected void onPostExecute(String result) {
// TODO Auto-generated method stub
//让进对话框消失
prodia.dismiss();
//刷新数据
adap.notifyDataSetChanged();
pagenum++;
super.onPostExecute(result);
}
@Override
protected void onPreExecute() {
// TODO Auto-generated method stub
//让进对话框显示
prodia.show();
super.onPreExecute();
}
@Override
protected void onProgressUpdate(String... values) {
// TODO Auto-generated method stub
super.onProgressUpdate(values);
}
}