您的位置:首页 > 其它

关于xlistview的分页和大家分享一下

2017-04-24 20:55 411 查看
                                                                   Xlistview的分页         刚做了一个小的项目,总结了下经验和大家分享一下其中的一个小段落是Xlistview的下拉刷新和点击加载更多一直追加到后面显示的效果;       一个完整的小demo分享一下希望大神们指点和切磋:             实现步骤如下:                 第一步是通过别人封装的第三方框架来调用xlistview',我们定义activity_xml文件:                      
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayoutxmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/activity_scheng"
android:layout_width="match_parent"
android:layout_height="match_parent">
<myxlistview.XListViewandroid:id="@+id/xlistv_sc"
android:layout_width="match_parent"
android:layout_height="match_parent"></myxlistview.XListView>

</RelativeLayout>
然后我们自定义一个适配器来实现加载数据代码自定();
下面我是通过xutlis解析的数据(用xutils3的时候需要倒包
compile 'org.xutils:xutils:3.5.0'
)然后在主类里面调用实现效果的逻辑代码如下:
publicclassSChengActivity extendsActivity implementsXListView.IXListViewListener{
privateXListView xlist_sc;
privateintbenId=0;
privateintxhaoID=0;
privateHandler mHandler;
privateList<ShangCBean.DataBean> mList=newArrayList<>();
privateintmFirstVisiblePosition;
@Override
protectedvoidonCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_scheng);
xlist_sc= (XListView) findViewById(R.id.xlistv_sc);
x.view().inject(this);
xlist_sc.setPullLoadEnable(true);//上拉刷新
xlist_sc.setXListViewListener(this);//给xListView设置监听  ******
//初始化一个handler
mHandler = newHandler();
//调取解析的方法
Getjiexi(benId,xhaoID);
//给xlistview设置滚动监听(里面可以获取他的显示可见的第一条的位置和最后一条的位置)
xlist_sc.setOnScrollListener(newAbsListView.OnScrollListener() {

@Override//本方法是滚动状态的改变
publicvoidonScrollStateChanged(AbsListView view, intscrollState) {
//获取当前显示可见的第一条的位置
mFirstVisiblePosition = xlist_sc.getFirstVisiblePosition();
}

@Override//
publicvoidonScroll(AbsListView view, intfirstVisibleItem, intvisibleItemCount, inttotalItemCount) {

}
});
}

/**
*
* @param path1 传入拼接的字符串
* @param path2 传入拼接的字符串
*    此方法是解析json串并解析适配到xlistview上面
*/
publicvoidGetjiexi(intpath1, intpath2){
//用xutils3的GET解析来拼接字符串进行解析
RequestParams params = newRequestParams(Url.scpath);
params.addQueryStringParameter("channelId",""+path1);
params.addQueryStringParameter("startNum",""+path2);
x.http().get(params, newCallback.CommonCallback<String>() {
@Override
publicvoidonSuccess(String result) {
//解析result数据
ShangCBean shangCBean = Gsons.GetGsonfrom(result, ShangCBean.class);
//解析数据返回一个集合
List<ShangCBean.DataBean> data = shangCBean.getData();
//便利集合并实例化一个集合来记录所有的数据
for(inti = 0; i < data.size(); i++) {
ShangCBean.DataBean dataBean = data.get(i);
mList.add(dataBean);
}
//适配新的集合传给适配器
SCBaseAdapter scBaseAdapter = newSCBaseAdapter(mList, SChengActivity.this);
xlist_sc.setAdapter(scBaseAdapter);
//调用xlistview的setSelection的方法来设置刚才记录的获取的当前位置的坐标给他
xlist_sc.setSelection(mFirstVisiblePosition);
}
//请求异常后的回调方法
@Override
publicvoidonError(Throwable ex, booleanisOnCallback) {
}
//主动调用取消请求的回调方法
@Override
publicvoidonCancelled(CancelledException cex) {
}
@Override
publicvoidonFinished() {
}
});
}
privatevoidonLoad() {
xlist_sc.stopRefresh();
xlist_sc.stopLoadMore();
xlist_sc.setRefreshTime("刚刚");
}
@Override
publicvoidonRefresh() {
//通过handler的方法实现刷新几秒
mHandler.postDelayed(newRunnable() {
@Override
publicvoidrun() {
//实现下拉刷新显示第一条数据的功能;先对集合判空子在清除集合
if(mList != null) {
mList.clear();
}
//把变量在给赋值为0
xhaoID =0;
//调方法来实现展示数据
Getjiexi(benId,xhaoID);
//调方法来关闭下拉刷新
onLoad();
}
}, 2000);
}
@Override
publicvoidonLoadMore() {
//通过handler的方法实现刷新几秒
mHandler.postDelayed(newRunnable() {
@Override
publicvoidrun() {
//让变量实现++变换页面
++xhaoID;
//调取方法实现展示效果
Getjiexi(benId,xhaoID);
//调方法来关闭下拉刷新
onLoad();
}
}, 2000);
}
}

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