分页加载在程序开发中是必备的,但是我们实现这个功能并不仅仅为了美观,用户体验也是很重要的,爱站技术频道下面就带大家了解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 ListallData; // 所有数据

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

private int currentPage = 1;// 当前页

private int pageNum = 1; // 页码

private ListchildData;// 子数据

private int allNum;// 总共条目

public PageHelper(Listdatas, 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;

}

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 ListcurrentList() {

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 PageHelpermPageDaoImpl;

private DataAdapter mAdapter;

private ListmDatas;

//被选着的索引

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()

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

public class DataAdapter extends BaseAdapter {

private Context mContext;

private ListmDatas;

public DataAdapter(Context context, Listdatas) {

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(Listdatas) {

mDatas = datas;

notifyDataSetChanged();

}

}

以上就是爱站技术频道小编介绍的Android开发中实现分页效果的简单步骤,接下来还是要在项目中操作,不管是什么功能的开发也是值得程序员重视的。

android开发分页查询,Android开发中实现分页效果的简单步骤相关推荐

  1. mysql分页查询所有数据库_MySQL 数据库 分页查询/聚合查询

    引言 在本篇博客简单介绍一下分页查询以及聚合查询简单操做.html 分页查询 在MySQL中,分页查询通常都是使用limit子句实现,limit子句声明以下:mysql SELECT * FROM t ...

  2. JAVA中oracle分页语句,oracle分页查询语句,java得到分页查询语句的方法

    oracle分页查询语句 select * from ( select a.*, rownum rn from (select * from table_name) a where rownum &l ...

  3. oracle分页查询sql语句通用,oracle分页查询sql语句,oracle分页查询sql语句详解

    oracle分页查询sql语句,oracle分页查询sql语句详解,Oracle分页查询sql语句 Oracle中分页和MySql中的分页不同,MySql中的分页使用关键字limit即可,相对简单一点 ...

  4. java oracle分页查询语句_oracle分页查询语句,java得到分页查询语句的方法

    oracle分页查询语句 select * from ( select a.*, rownum rn from (select * from table_name) a where rownum &l ...

  5. 使用oracle数据库分页查询语句,各种数据库的分页查询语句

    各种数据库的分页查询语句 1.oracle数据库分页select * from (select a.*,rownum rc from 表名 where rownum=endrow) a where a ...

  6. Android数据库 分页查询,Android之怎么使用SQLite数据库(增、删、改、查、分页等)以及ListView显示数据(转)...

    由于刚接触android开发,故此想把学到的基础知识记录一下,以备查询,故此写的比较啰嗦: 步骤如下: 一.介绍: 此文主要是介绍怎么使用android自带的数据库SQLite,以及把后台的数据用Li ...

  7. java 分页查询_java开发之分页查询

    工具类 package com.luer.comm.utils; import java.util.List; public class PageBean { //已知数据 private int p ...

  8. java分页查询海量数据_Java中的大量数据查询

    解决方案一:直接使用ResultSet来处理 从ResultSet中将查询结果读入collection,缓存在HttpSession或有状态bean中,翻页的时候从缓存中取出一页数据显示.这种方法有两 ...

  9. 分页offset格式_MySQL中limit分页查询性能问题分析

    MySQL Limit 语法格式: SELECT * FROM table LIMIT [offset,] rows | rows OFFSET offset 分页查询时,我们会在 LIMIT 后面传 ...

最新文章

  1. Linux :debian(ubuntu)下安装和使用haskell
  2. No.3 clojure 调用 Java
  3. python随机画散点图-python散点图实例之随机漫步
  4. List、Vector、ArraryList、LinkedList
  5. 达梦数据库的基本使用
  6. cllocationmanager 获取不了 的原因_我的世界:天启之境如何获取“人鱼手链”?一段人鱼姬的爱情故事...
  7. python第三十二课——队列
  8. java文件操作大全
  9. html中文字过长 自动隐藏,css 实现文字过长自动隐藏功能
  10. oa 系统后期安装服务
  11. 软件工程环形复杂度计算方法有哪些_软件工程复习6165组考题
  12. linux sed 1的意思,linux命令(1):sed命令
  13. SoX-linux里操作音频的瑞士×××
  14. 每日英语:6 Brainy Habits of the Wisest People
  15. 【C语言】爱心表白代码
  16. Qt中添加鼠标右键菜单
  17. 【转】《飞鸟集》325首全文
  18. The simplest way to combine two csv file in python
  19. 你真的懂iOS的异常捕获吗?
  20. 「米聊」突然复活,雷布斯真的是出其不意

热门文章

  1. Azure角色管理技巧和工具
  2. 基于Raspbian(树莓派)搭建web安全练习环境(一)
  3. 新增的output元素 progress元素 meter元素 keygen元素
  4. sp根据备份文件来创建DB
  5. Linux 命令(15)—— umask 命令(builtin)
  6. 青蛙跳台阶问题暨斐波那契数列
  7. RedHat7 Git 安装使用
  8. 一条汇编指令是如何在计算机的硬件中进行执行的
  9. 适合建索引?不适合建索引?分析
  10. Windows Phone7 手机越狱教程