android分页评价实现,Android实现简单的分页效果

本文实例为大家分享了android分页效果的具体代码,供大家参考,具体内容如下

1.实现分页最主要的就是封装分页代码,然后在按钮里实现相关的操作

/**

* 分页工具

*

* @project app_page

* @package com.android.dividepage

* @author chenlin

* @version 1.0

* @date 2012年6月2日

* @note todo

* @param

*/

public class pagehelper {

private list alldata; // 所有数据

private int perpage = 10; // 每页条目

private int currentpage = 1;// 当前页

private int pagenum = 1; // 页码

private list childdata;// 子数据

private int allnum;// 总共条目

public pagehelper(list datas, int perpage) {

this.alldata = datas;

if (perpage > 0)

this.perpage = perpage;

// 如果数据大于10条

if (alldata != null && alldata.size() > perpage) {

childdata = alldata.sublist(0, perpage - 1);

}

allnum = alldata.size();

// 如果总数能除断perpage,页数就是余数,否则+1

pagenum = allnum % perpage == 0 ? (allnum / perpage) : (allnum / perpage + 1);

}

public int getcount() {

return this.allnum;

}

public int getcurrentpage() {

return this.currentpage;

}

public int getpagenum() {

return this.pagenum;

}

public int getperpage() {

return this.perpage;

}

public void gotopage(int n) { // 页面跳转

currentpage = n > pagenum ? pagenum : (n < 1 ? 1 : n);

}

public boolean hasnextpage() {// 是否有下一页

return currentpage < pagenum;

}

public boolean hasprepage() {// 是否有前一页

return currentpage > 1;

}

public void headpage() {// 第一页

currentpage = 1;

}

public void lastpage() {// 最后一页

currentpage = pagenum;

}

public void nextpage() {// 下一页

currentpage = hasnextpage() ? currentpage + 1 : pagenum;

}

public void prepage() {// 前一页

currentpage = hasprepage() ? currentpage - 1 : 1;

}

public void setperpage(int perpage) {// 设置上一页面

this.perpage = perpage;

}

/**

* 获得当前数据

* @return

*/

public list currentlist() {

if (currentpage == 1) {

childdata = alldata.sublist(0, perpage);

} else if (currentpage == pagenum) {

childdata = alldata.sublist(perpage * (pagenum - 1), allnum);

} else {

childdata = alldata.sublist(perpage * (currentpage - 1), perpage * currentpage);

}

return childdata;

}

public void setcurrentpage(int currentpage) {

this.currentpage = currentpage;

}

}

2、主页里我根据tab标签把按钮设置进去,然后在click里方法读取,最后根据tag标签就可判断是哪个按钮点击了

/**

* 分页主页

* @project app_page

* @package com.android.dividepage

* @author chenlin

* @version 1.0

* @date 2012年6月2日

* @note todo

*/

public class mainactivity extends activity implements onclicklistener {

private listview mlistview;

//分页按钮

private button mbtnprepage, mbtnnextpage, mbtnpreitem, mbtnnextitem;

//显示分页信息

private textview mtvpageno;

//数据实现

private pagehelper mpagedaoimpl;

private dataadapter madapter;

private list mdatas;

//被选着的索引

private int selectindex = 0;

private static final int prepage = 0;

private static final int nextpage = 1;

private static final int preitem = 2;

private static final int nextitem = 3;

@override

protected void oncreate(bundle savedinstancestate) {

super.oncreate(savedinstancestate);

setcontentview(r.layout.activity_main);

initviews();

initdatas();

}

private void initdatas() {

//从资源文件里读数据

mdatas = arrays.aslist(getresources().getstringarray(r.array.channellist));

//每次读8条数据

mpagedaoimpl = new pagehelper(mdatas, 8);

madapter = new dataadapter(this, mpagedaoimpl.currentlist());

mlistview.setadapter(madapter);

//设置当前页码与总页码

mtvpageno.settext(mpagedaoimpl.getcurrentpage() + " / " + mpagedaoimpl.getpagenum());

}

private void initviews() {

mlistview = (listview) findviewbyid(r.id.page_list);

mbtnprepage = (button) findviewbyid(r.id.pre_page);

mbtnprepage.settag(prepage);

mbtnprepage.setonclicklistener(this);

mbtnnextpage = (button) findviewbyid(r.id.next_page);

mbtnnextpage.settag(nextpage);

mbtnnextpage.setonclicklistener(this);

mbtnpreitem = (button) findviewbyid(r.id.pre_item);

mbtnpreitem.settag(preitem);

mbtnpreitem.setonclicklistener(this);

mbtnnextitem = (button) findviewbyid(r.id.next_item);

mbtnnextitem.settag(nextitem);

mbtnnextitem.setonclicklistener(this);

mtvpageno = (textview) findviewbyid(r.id.pagenum);

}

@override

public void onclick(view v) {

final int flag = (integer) v.gettag();

switch (flag) {

case prepage:// 首页

headpage();

break;

case nextpage:// 尾页

lastpage();

break;

case preitem:// 上一条

prepage();

break;

case nextitem:// 下一条

nextpage();

break;

}

}

private void prepage() {

if (selectindex == 0) {

if (mpagedaoimpl.getcurrentpage() >= 1) {

mpagedaoimpl.prepage();

}

madapter.setdata(mpagedaoimpl.currentlist());

mlistview.setselection(madapter.getcount() - 1);

mtvpageno.settext(mpagedaoimpl.getcurrentpage() + " / " + mpagedaoimpl.getpagenum());

} else {

return;

}

}

private void nextpage() {

if (mpagedaoimpl.getcurrentpage() <= mpagedaoimpl.getpagenum()) {

mpagedaoimpl.nextpage();

}

madapter.setdata(mpagedaoimpl.currentlist());

mlistview.setselection(0);

mtvpageno.settext(mpagedaoimpl.getcurrentpage() + " / " + mpagedaoimpl.getpagenum());

}

private void lastpage() {

if (mpagedaoimpl.getcurrentpage() != mpagedaoimpl.getpagenum()) {

mpagedaoimpl.lastpage();

}

madapter.setdata(mpagedaoimpl.currentlist());

mtvpageno.settext(mpagedaoimpl.getcurrentpage() + " / " + mpagedaoimpl.getpagenum());

}

private void headpage() {

if (mpagedaoimpl.getcurrentpage() != 1) {

mpagedaoimpl.headpage();

}

madapter.setdata(mpagedaoimpl.currentlist());

mtvpageno.settext(mpagedaoimpl.getcurrentpage() + " / " + mpagedaoimpl.getpagenum());

}

}

3、适配器代码,太简单了,我就不说了

public class dataadapter extends baseadapter {

private context mcontext;

private list mdatas;

public dataadapter(context context, list datas) {

this.mcontext = context;

this.mdatas = datas;

}

@override

public int getcount() {

return mdatas == null ? 0 : mdatas.size();

}

@override

public object getitem(int position) {

return mdatas == null ? null : mdatas.get(position);

}

@override

public long getitemid(int position) {

return position;

}

@override

public view getview(int position, view convertview, viewgroup parent) {

viewholder mholder;

if (convertview == null) {

convertview = layoutinflater.from(mcontext).inflate(r.layout.channel_item, parent, false);

mholder = new viewholder();

mholder.nameview = (textview) convertview.findviewbyid(r.id.channel_name);

convertview.settag(mholder);

}

mholder = (viewholder) convertview.gettag();

mholder.nameview.settext(mdatas.get(position));

return convertview;

}

static class viewholder {

public textview nameview;

}

public void setdata(list datas) {

mdatas = datas;

notifydatasetchanged();

}

}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持萬仟网。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值