Android: BaseAdapter 实现分页
- 列表的显示需要三个元素:
- 1.ListVeiw 用来展示列表的View。
- 2.适配器 用来把数据映射到ListView上的中介。
- 3.数据 具体的将被映射的字符串,图片,或者基本组件。
- 根据列表的适配器类型,列表分为三种,ArrayAdapter,SimpleAdapter和SimpleCursorAdapter
- 其中以ArrayAdapter最为简单,只能展示一行字。
- SimpleAdapter有最好的扩充性,可以自定义出各种效果。
- SimpleCursorAdapter可以认为是SimpleAdapter对数据库的简单结合,可以方便的把数据库的内容以列表的形式展示出来。
分页效果图:
- <ListView android:id="@+id/list"
- android:layout_width="fill_parent"
- android:layout_height="wrap_content" />
- lt;LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:orientation="horizontal" android:layout_width="fill_parent"
- android:layout_height="wrap_content" android:gravity="bottom">
- <Button android:id="@+id/btnLeft"
- android:layout_width="150dip"
- android:layout_height="wrap_content"
- android:text="Previous Page" />
- <Button android:id="@+id/btnRight"
- android:layout_width="150dip"
- android:layout_height="wrap_content"
- android:text="Next Page" />
- </LinearLayout>
- import android.app.Activity;
- import android.os.Bundle;
- import android.view.Gravity;
- import android.view.View;
- import android.view.ViewGroup;
- import android.widget.BaseAdapter;
- import android.widget.Button;
- import android.widget.ListView;
- import android.widget.TextView;
- public class listMoreTest extends Activity {
- int VIEW_COUNT = 10;
- int index = 0;
- ListView listView;
- Button btnLeft, btnRight;
- View.OnClickListener clickListener;
- MyAdapter myAdapter;
- String[] data = { "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10",
- "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21",
- "22", "23", "24", "25", "26", "27", "28", "29", "30", "31", "32",
- "33", "34", "35", "36", "37" };
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.listview);
- initView();
- // 设置ListView的Adapter
- myAdapter = new MyAdapter(this);
- // TODO 此处是双向绑定吗?
- listView.setAdapter(myAdapter);
- clickListener = new Button.OnClickListener() {
- @Override
- public void onClick(View v) {
- switch (v.getId()) {
- case R.id.btnLeft:
- leftView();
- break;
- case R.id.btnRight:
- rightView();
- break;
- }
- }
- };
- btnLeft.setOnClickListener(clickListener);
- btnRight.setOnClickListener(clickListener);
- changeButtonStatus();
- }
- public void initView() {
- listView = (ListView) findViewById(R.id.list);
- btnLeft = (Button) findViewById(R.id.btnLeft);
- btnRight = (Button) findViewById(R.id.btnRight);
- }
- /**
- * 点击左边的Button,表示向前翻页,索引值要减1.
- */
- public void leftView() {
- index--;
- // 刷新ListView里面的数值。
- myAdapter.notifyDataSetChanged();
- changeButtonStatus();
- }
- /**
- * 点击右边的Button,表示向后翻页,索引值要加1.
- */
- public void rightView() {
- index++;
- // 刷新ListView里面的数值。
- myAdapter.notifyDataSetChanged();
- changeButtonStatus();
- }
- /**
- * 变更btnLeft与btnRight按钮是否可用。
- */
- public void changeButtonStatus() {
- if (index <= 0) {
- btnLeft.setEnabled(false);
- } else if (data.length - index * VIEW_COUNT <= VIEW_COUNT) {
- btnRight.setEnabled(false);
- } else {
- btnLeft.setEnabled(true);
- btnRight.setEnabled(true);
- }
- }
- // ListView的Adapter,这个是关键的导致可以分页的根本原因。
- public class MyAdapter extends BaseAdapter {
- Activity activity;
- public MyAdapter(Activity a) {
- activity = a;
- }
- /**
- * 设置每一页的长度,默认的是View_Count的值。
- */
- @Override
- public int getCount() {
- // ori表示到目前为止的前几页的总共的个数。
- int ori = VIEW_COUNT * index;
- if (data.length - ori < VIEW_COUNT) {
- return data.length - ori;
- } else {
- return VIEW_COUNT;
- }
- }
- /**
- * 显示TextView data。
- */
- @Override
- public View getView(int position, View convertView, ViewGroup parent) {
- // return addTestView(position);
- TextView textView = new TextView(activity);
- textView.setGravity(Gravity.LEFT);
- textView.setText(data[position + index * VIEW_COUNT]);
- return textView;
- }
- @Override
- public Object getItem(int position) {
- return position;
- }
- @Override
- public long getItemId(int position) {
- return position;
- }
- }
- }
Android: BaseAdapter 实现分页相关推荐
- Android BaseAdapter与ListView的使用
Android BaseAdapter与ListView的使用 定义:BaseAdapterextends Objectimplements ListAdapter SpinnerAdapter Ba ...
- Android BaseAdapter 例子
BaseAdapter Java代码 public class RecentAdapter extends BaseAdapter { private class RecentViewHold ...
- Android 动态Tab分页效果实现
当前项目使用的是TabHost+Activity进行分页,目前要做个报表功能,需要在一个Tab页内进行Activity的切换.比方说我有4个Tab页分别为Tab1,Tab2,Tab3,Tab4,现在的 ...
- Android BaseAdapter和ViewHolder 优化 解决ListView的item抢焦点问题和item错乱问题
首先赞下hyman大神 曾经仅仅是简单的重写个BaseAdapter,将getView方法保持抽象.而ViewHolder没有抽象过. .. ViewHolder (用了一个集合+泛型管理存取view ...
- android 之ListView分页效果以及从网络上加载数据一系列的综合运用
数据分页策略: <1>:用多少查多少 <2>:全部查询出来,再进行分页处理 数据分页的有关算法: (1):起始索引值 = (当前页-1)*每页显示的记录数 (2):结束索引值 ...
- android之tab分页标签的实现方法,Android应用中使用ViewPager和ViewPager指示器来制作Tab标签...
一.ViewPageIndicator开源框架的基本用法我们先得去Github上面下载这个库,下载地址:https://github.com/JakeWharton/Android-ViewPager ...
- Android 动态Tab分页效果
当前项目使用的是TabHost+Activity进行分页,目前要做个报表功能,需要在一个Tab页内进行Activity的切换.比方说我有4 个Tab页分别为Tab1,Tab2,Tab3,Tab4,现在 ...
- android listview item 错位,Android BaseAdapter和ViewHolder 优化 解决ListView的item抢焦点问题和item错乱问题...
首先赞下hyman大神 曾经仅仅是简单的重写个BaseAdapter,将getView方法保持抽象.而ViewHolder没有抽象过. .. ViewHolder (用了一个集合+泛型管理存取view ...
- android Baseadapter 和 ViewHolder的使用
昨晚学习了徐大神的关于BaseAdapter的讲解,让我受益匪浅特来博客留下印记 说到baseadapter大家一定都不陌生,下面这张图就展示了数据.listview.baseadapter 之间的关 ...
最新文章
- 一文读懂虚拟现实产业最新发展趋势
- 小米一键上锁工具_小米智能门锁和猫眼,可女声变男声与访客隔门沟通
- java线程栅栏_Java 多线程基础 - CyclicBarrier
- 把docker当做绿色打包工具
- C#修改系统环境变量,调用批处理bat
- Html5 冒泡排序演示
- 网页端对接linux发起cc,(cc)实现Linux系统调用劫持
- python中的列表和元组_浅析Python中的列表和元组
- hash ruby 定义 嵌套_【译】rails的嵌套属性(Nested Attributes)使用
- Mybatis源码概览(一)
- Win11 恢复设置Win10任务栏、快速启动栏及右键菜单(Win11 22000.100版本测试通过)
- delphi 类的写法 和 控制台程序的制作---深入Delphi编程 数据库
- Transformations in signals and systems DSP
- 电脑自带的cmd/Powershell连接远程服务器(实用技巧)
- 为什么4万月薪招聘不到赴日软件工程师?
- 联通物联卡 显示“已停用”
- PyQt5适配高分屏的方法
- 手绘白板动画视频制作工具VideoScribe 3.11.2 Windows最新横屏竖屏方屏视频号普屏电商六合一汉化中文专业版画布和输出视频无水印支持720p和1080p高清输出
- 迄今微软不同时期发布的SQL Server各版本之间的大致区别,供参考查阅
- firewalld permanent参数
热门文章
- 【Android 安装包优化】资源混淆 ( resources.arsc 资源映射表文件格式 | 头文件 数据格式 | 全局字符串池 数据格式 | 包数据 数据格式 | 包头 数据格式 )
- 【设计模式】外观模式 ( 概念 | 适用场景 | 优缺点 | 代码示例 )
- 路由器发展编年史 完结篇
- BZOJ2437 [Noi2011]兔兔与蛋蛋 【博弈论 + 二分图匹配】
- poj2441 Arrange the Bulls
- 【Java】学习笔记(1)
- requestAnimationFrame
- 【leetcode】500. Keyboard Row
- SpringMvc+AngularJS通过CORS实现跨域方案
- 网络游戏服务器端架构设计(转载)