如果你用过 新浪微薄Android客户端,或者其他Android电子市场,你会发现,他们的内容是不是滚不完,会根据网络进行下一页数据加载。好把,今天在这里我就和大家分享下我写的一个分页类,让大家以后写带分页界面越来越容易。
package com.ffly.demo
import java.util.List;
import android.content.Context;
import android.os.Handler;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
public class NduoaPageAdapter <T> extends BaseAdapter{
private boolean mHasLeft = true;
private int mPageSize;
private List<T> mResult = null;
private Context mContext = null;
private LayoutInflater mInflater;
private int mRes;
private int mLoadingRes;
private INduoaPageAdapter<T> mCallback;
private int mStart=0;
//res 显示项视图的资源编号,loadingres就是等待中的项试图
public NduoaPageAdapter(Context context,INduoaPageAdapter<T> callback,int pageSize,int res,int loadingRes){
mContext = context;
mInflater = LayoutInflater.from(mContext);
mCallback = callback;
mPageSize = pageSize;
mRes = res;
mLoadingRes = loadingRes;
mHasLeft=true;
}
//必须初始化所需的数据
public void setInitData(List<T> iniData){
mResult = iniData;
mStart+=iniData.size();
if(iniData.size()<mPageSize){
mHasLeft = false;
}
}
@Override
public int getCount() {
return mHasLeft ? mResult.size() + 1 : mResult.size();
}
@Override
public Object getItem(int position) {
return mResult.get(position);
}
@Override
public long getItemId(int position) {
return 0;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
if(position == mResult.size()) {
convertView = mInflater.inflate(mLoadingRes, parent, false);
new Thread(){
public void run() {
List<T> tmps = mCallback.nextPage(mStart, mPageSize);
if(tmps==null){
mHasLeft = false;
}else{
if(tmps.size()<mPageSize){
mHasLeft = false;
}else{
mHasLeft = true;
}
mResult.addAll(tmps);
mStart+=tmps.size();
}
mHandler.sendEmptyMessage(1);
};
}.start();
convertView.setTag(null);
}else {
if (convertView == null || convertView.getTag()==null) {
convertView = mInflater.inflate(mRes,
parent, false);
}
return mCallback.getView(position, convertView, parent, mResult.get(position));
}
return convertView;
}
Handler mHandler = new Handler(){
public void handleMessage(android.os.Message msg) {
NduoaPageAdapter.this.notifyDataSetChanged();
};
};
//这里只需要实现这2个接口,就可以保证分页了。第一个函数是当滚动到下一页是,回掉返回获取到的数据。第2个函数
//用来自定义你每项的试图,这个我想不用多说了把。
public interface INduoaPageAdapter<T>{
public List<T> nextPage(int start,int size);
public View getView(int position,View convertView,ViewGroup parent,T value);
}
}
发现出了点小bug 及时为大家修复!
分享到:
相关推荐
android自定义分页控件,内有详细注释。简洁明了。 使用方便。
android分页调用webservice获取数据
本文实例为大家分享了Android分页效果的具体代码,供大家参考,具体内容如下 1.实现分页最主要的就是封装分页代码,然后在按钮里实现相关的操作 /** * 分页工具 * * @Project App_Page * @Package ...
android-architecture-components, Android架构组件示例 Android架构组件示例使用架构组件的示例的Collection:聊天室生命周期识别组件ViewModelsLiveData分页( 预览)WorkManager ( alpha )示例BasicSample 显示
这是一个集成目前Android主流优秀第三方组件、优秀好用的自定义控件、实用工具类封装、以及一些APP共通模块(比如:版本更新、意见反馈、引导界面等等)的开发包,帮助程序员快速开发自己的APP 已集成第三方开源...
导航和分页_Y!DSK.rplib 广告位_Y!DSK.rplib 幻灯片_Y!DSK.rplib 控制条_Y!DSK.rplib 屏幕分辨率_Y!DSK.rplib 日历_Y!DSK.rplib 手机-General_Y!DSK.rplib 手机-iPhone_Y!DSK.rplib 图表和表格_Y!DSK.rplib 文本模板...
Adapter和AdapterView Spinner(下拉列表) ListView(列表) GridView(网格) Gallery(画廊) SlidingDrawer(滑动抽屉) AutoCompleteTextView(自动完成) TabHost(分页视图)
Android ListView分页简单实现 分页,开发应用中必不可少。那么,现在就来实现分页功能。 首先来想想实现它要有哪些步骤, 1, 实现的组件, 2、初始化第一页数据, 3,底部布局 , 4,加载数据的条件 5、获取...
android中gridview组件的使用,结合viewpager的分页功能,含有完整源码
Android上类似桌面应用的一个GridView,可以拖动位置,支持多页,可以拖动子项到另一页。
GridPager组件,类似美团APP的多分类分页显示,链式调用,极简接入
这是一个集成目前Android主流优秀第三方组件、优秀好用的自定义控件、实用工具类封装、 以及一些APP共通模块(比如:版本更新、意见反馈、引导界面等等)的开发包,帮助程序员 快速开发自己的APP 已集成第三方...
Android手机外壳及UI组件库.rplib Android组件库.rplib Axure RP社交网络元素库.rplib AxureRP-win7phone-AxureRP-Library.rplib Axure反馈表单.rplib Axure图标 (16x16).rplib Axure图标(32x32).rplib Better ...
其中就包含cwac endlless cwac endless提供一个EndlessAdapter 这是一个自动分页的List 当用户浏览到List最后一行时自动请求新的数据">CommonsWare Android Components CWAC 是一个开源的Android组件库 用来解决...
感知房间生命周期的组件ViewModels LiveData样本构架组件和这些样本Android构架组件样本使用体系结构组件的样本集合:机房生命周期感知组件ViewModels LiveData分页导航ViewBinding WorkManager Samples BasicSample...
Android体系结构组件:使用分页库的会议室数据库LiveData分页。 待定: 教程 文献资料 测试用例
Android手机外壳及UI组件库.rplib Android组件库.rplib Audio_Icons_Axure_Library.rplib Axure RP社交网络元素库.rplib AxureRP-win7phone-AxureRP-Library.rplib Axure反馈表单.rplib Axure图标 (16×16).rplib ...
使用Android分页库进行分页和无限滚动。 处理网络状态和网络故障 ConstraintLayout(准则,障碍等) 材料设计。 :rocket: 入门 这些说明将为您提供在本地计算机上运行并运行的项目的副本,以进行开发和测试。 ...
3.抽屉菜单,导航菜单,搜索,分页条,滑块,进度条,走马灯,评星,验证码,日历,时间设置,选中统计,图片轮播,漂浮广告,喜欢,点赞,抽奖转盘等 4.包含了界面模型、设备模型、流程元素、标注元素、交互手势等...