`
ggggnuirgw
  • 浏览: 97982 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Android 分页组件

 
阅读更多

如果你用过 新浪微薄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 及时为大家修复!

2
1
分享到:
评论
1 楼 jk138 2011-08-02  
你说的两个接口,只写了一个接口出来

相关推荐

    android自定义分页控件

    android自定义分页控件,内有详细注释。简洁明了。 使用方便。

    android的Listview分页

    android分页调用webservice获取数据

    Android实现简单的分页效果

    本文实例为大家分享了Android分页效果的具体代码,供大家参考,具体内容如下 1.实现分页最主要的就是封装分页代码,然后在按钮里实现相关的操作 /** * 分页工具 * * @Project App_Page * @Package ...

    android-architecture-components, Android架构组件示例.zip

    android-architecture-components, Android架构组件示例 Android架构组件示例使用架构组件的示例的Collection:聊天室生命周期识别组件ViewModelsLiveData分页( 预览)WorkManager ( alpha )示例BasicSample 显示

    集成目前Android主流优秀第三方组件

    这是一个集成目前Android主流优秀第三方组件、优秀好用的自定义控件、实用工具类封装、以及一些APP共通模块(比如:版本更新、意见反馈、引导界面等等)的开发包,帮助程序员快速开发自己的APP 已集成第三方开源...

    Axure组件iPhone、Android、雅虎、手绘各组件库.zip

    导航和分页_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 文本模板...

    android高级UI组件

    Adapter和AdapterView Spinner(下拉列表) ListView(列表) GridView(网格) Gallery(画廊) SlidingDrawer(滑动抽屉) AutoCompleteTextView(自动完成) TabHost(分页视图)

    Android ListView分页简单实现

    Android ListView分页简单实现 分页,开发应用中必不可少。那么,现在就来实现分页功能。 首先来想想实现它要有哪些步骤, 1, 实现的组件, 2、初始化第一页数据, 3,底部布局 , 4,加载数据的条件 5、获取...

    android gridview的分页

    android中gridview组件的使用,结合viewpager的分页功能,含有完整源码

    Android类似桌面应用拖动的GridView

    Android上类似桌面应用的一个GridView,可以拖动位置,支持多页,可以拖动子项到另一页。

    Android-GridPager组件类似美团APP的多分类分页显示链式调用极简接入

    GridPager组件,类似美团APP的多分类分页显示,链式调用,极简接入

    Android集成主流优秀第三方组件框架

    这是一个集成目前Android主流优秀第三方组件、优秀好用的自定义控件、实用工具类封装、 以及一些APP共通模块(比如:版本更新、意见反馈、引导界面等等)的开发包,帮助程序员 快速开发自己的APP 已集成第三方...

    Axure最全组件库

    Android手机外壳及UI组件库.rplib Android组件库.rplib Axure RP社交网络元素库.rplib AxureRP-win7phone-AxureRP-Library.rplib Axure反馈表单.rplib Axure图标 (16x16).rplib Axure图标(32x32).rplib Better ...

    android cwac-endless

    其中就包含cwac endlless cwac endless提供一个EndlessAdapter 这是一个自动分页的List 当用户浏览到List最后一行时自动请求新的数据"&gt;CommonsWare Android Components CWAC 是一个开源的Android组件库 用来解决...

    Android体系结构组件的示例。-Android开发

    感知房间生命周期的组件ViewModels LiveData样本构架组件和这些样本Android构架组件样本使用体系结构组件的样本集合:机房生命周期感知组件ViewModels LiveData分页导航ViewBinding WorkManager Samples BasicSample...

    PagingLocal:Android体系结构组件-具有本地数据的分页室数据库

    Android体系结构组件:使用分页库的会议室数据库LiveData分页。 待定: 教程 文献资料 测试用例

    63套Axure组件库

    Android手机外壳及UI组件库.rplib Android组件库.rplib Audio_Icons_Axure_Library.rplib Axure RP社交网络元素库.rplib AxureRP-win7phone-AxureRP-Library.rplib Axure反馈表单.rplib Axure图标 (16×16).rplib ...

    PopularMovies:电影发现应用程序展示了Google推荐的体系结构上的Android最佳实践:MVVM +存储库+脱机支持+ Android体系结构组件+分页库和Retrofit2

    使用Android分页库进行分页和无限滚动。 处理网络状态和网络故障 ConstraintLayout(准则,障碍等) 材料设计。 :rocket: 入门 这些说明将为您提供在本地计算机上运行并运行的项目的副本,以进行开发和测试。 ...

    原型设计,axure9最全组件库

    3.抽屉菜单,导航菜单,搜索,分页条,滑块,进度条,走马灯,评星,验证码,日历,时间设置,选中统计,图片轮播,漂浮广告,喜欢,点赞,抽奖转盘等 4.包含了界面模型、设备模型、流程元素、标注元素、交互手势等...

Global site tag (gtag.js) - Google Analytics