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

Android中如何实现ListView的分页加载

2015-07-16 14:31 651 查看
上一篇我粗略的说了下实现ListView下拉刷新的主要步骤,接下来我就如何实现ListView的分页加载来说下主要实现步骤:

1.继承ListView,ListView有一个addFooterView的方法用来在ListView的底部添加一个view。

2.同样给ListView添加滚动监听事件。

3.通过OnScrollListener中的onScroll方法来判断ListView是否滑到了最底部。

4.同样通过回调接口来实现在Activity中加载数据。

5.通过OnScrollListener中的onScrollStateChanged方法来改变底部view的显示以及加载更多数据。

下面看代码:

public class ListViewFooterRefresh extends ListView implements OnScrollListener{

private View footerView;

private int firstVisibleItem;//第一个Item的位置

private int visibleItemCount;//显示的Item数量

private int totalItemCount;//显示的最后一个Item

private int lastVisibleItem;

private boolean isLoading;//是否正在加载

private RefreshListener refreshListener;

public ListViewFooterRefresh(Context context) {

super(context);

initView(context);

}



public ListViewFooterRefresh(Context context, AttributeSet attrs) {

super(context, attrs);

initView(context);

}



public ListViewFooterRefresh(Context context, AttributeSet attrs,

int defStyleAttr) {

super(context, attrs, defStyleAttr);

initView(context);

}

/**

* 加载底部布局

* @param context

*/

private void initView(Context context){

footerView = LayoutInflater.from(context).inflate(R.layout.footer_listview, null);

footerView.findViewById(R.id.footer).setVisibility(View.GONE);

this.addFooterView(footerView);

this.setOnScrollListener(this);

}

/**

* 滚动事件

*/

@Override

public void onScrollStateChanged(AbsListView view, int scrollState) {

if(lastVisibleItem == totalItemCount && scrollState == SCROLL_STATE_IDLE){

if(!isLoading){

isLoading = true;

//显示footer

footerView.findViewById(R.id.footer).setVisibility(VISIBLE);

//加载更多,刷新数据

refreshListener.OnRefresh();

}


}



}


@Override

public void onScroll(AbsListView view, int firstVisibleItem,

int visibleItemCount, int totalItemCount) {

// TODO Auto-generated method stub

this.lastVisibleItem = firstVisibleItem + visibleItemCount;

this.totalItemCount = totalItemCount;



}



/**

* 设置回调接口

* @param refreshListener

*/

public void setInterface(RefreshListener refreshListener){

this.refreshListener = refreshListener;

}

/**

* 回调接口

* @author 5027

*

*/

public interface RefreshListener{

public void OnRefresh();

}



/**

* 加载完成

*/

public void refreshComplete(){

footerView.findViewById(R.id.footer).setVisibility(View.GONE);

}


}

//////////////////////////////////////////////////////Activity/////////////////////////////////////////////////////////////

@Override

public void OnRefresh() {

Handler handler = new Handler();

handler.postDelayed(new Runnable(){

@Override

public void run() {

//重新加载更多数据

ArrayAdapter adapter = new ArrayAdapter(MainActivity.this,android.R.layout.simple_list_item_1,new String[]{"小亮"});

listViewFooterRefresh.setAdapter(adapter);

//通知ListView刷新完毕

listViewFooterRefresh.refreshComplete();



}

}, 2000);



}



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