`
ugibb510
  • 浏览: 131983 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

Android: BaseAdapter 实现分页

 
阅读更多

转:http://www.iteye.com/topic/1111847

 

 列表的显示需要三个元素:
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"  />

	<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;
		}
	}
}
 
  • 大小: 33.8 KB
分享到:
评论

相关推荐

    android Gridview分页实现

    本篇文章将详细讲解如何在Android中利用GridView实现分页加载功能。 首先,理解GridView的基本概念。GridView是ListView的一种变体,它按照指定的列数来排列子视图。默认情况下,GridView会一次性加载所有数据,这...

    在Android中用textview实现简单的小说分页

    综上所述,实现Android中的小说分页功能涉及多个层面,包括自定义Adapter的设计、文本处理、UI布局、性能优化以及事件处理。通过这样的实践,我们可以创建一个用户友好的阅读体验,同时也可以锻炼对Android SDK和...

    BaseAdapter的使用与优化

    在Android开发中,ListView是展示大量数据常用的组件,而BaseAdapter是它的重要伙伴,用于将数据绑定到ListView的各个Item视图上。本教程通过一个Eclipse下的Android工程实例,详细讲解了BaseAdapter的使用方法以及...

    android 自动分页实现

    本篇将详细讲解如何在Android中实现ListView的自动分页功能。 首先,理解分页的基本原理。分页是将大数据集分为多个小部分,每次只加载一部分数据到界面,用户滚动到页面底部时,再加载下一页。这种方式在Android中...

    android listView 模拟物理分页Demo 按键

    在这个"android listView 模拟物理分页Demo 按键"项目中,开发者通过按键实现了分页加载数据的功能,以便用户逐步查看大量内容,避免一次性加载所有数据导致的性能问题。这个Demo适合初学者学习如何在ListView中实现...

    gridView实现SQLite分页表格

    总之,这个"gridView实现SQLite分页表格"的示例涵盖了Android开发中的多个重要知识点,包括SQLite数据库操作、自定义Adapter、GridView的使用以及分页加载策略,对提升Android开发能力非常有帮助。通过深入学习和...

    分页_分页_android_

    在这个特定的项目中,我们看到提到了“Android gridview 分页效果”,这表明开发者使用了GridView组件来实现分页显示数据。 GridView是Android中的一个视图组件,它可以用来展示多行多列的数据,通常用于创建类似...

    android listview分页查询显示

    在这个"android listview分页查询显示"的Demo中,我们将深入探讨如何实现这个功能,以及如何结合SQLite数据库进行数据管理。 首先,ListView的工作原理是通过Adapter来连接数据源和视图。Adapter负责将数据转化为...

    android gridview的分页

    本教程将详细讲解如何在Android中使用GridView实现分页功能,并结合ViewPager进行高效展示。 首先,我们需要了解GridView的基本用法。GridView继承自AbsListView,它会把数据项按照指定的列数排列成网格状。在XML...

    Android使用listview实现分页刷新(线程休眠模拟).zip

    本示例主要讲解如何在Android中利用ListView实现分页加载与刷新功能,并通过线程休眠模拟网络延迟,增强用户体验。以下是对这个主题的详细阐述: 一、ListView的基础 ListView是Android中的一个视图容器,它能够...

    Android之ListView列表视图和界面跳转实现

    实现BaseAdapter的方法,如getCount(), getItem(), getItemId() 和 getView() } ``` 在`getView()`方法中,我们将创建的`list_item.xml`布局填充数据: ```java @Override public View getView(int position, ...

    android表单分页效果

    本篇将详细讲解如何实现Android表单的分页效果,以`Listview`为例进行说明。 首先,`Listview`是Android中常用的一种视图组件,用于显示一列可滚动的数据项。在处理大量数据时,它通过适配器(Adapter)机制与数据...

    Android ListView 滑动分页

    本篇文章将详细讲解如何实现Android ListView的滑动分页功能。 首先,理解滑动分页的基本原理。滑动分页基于“按需加载”的概念,即仅在用户滚动到列表底部时才请求服务器获取新的数据。这样避免了一次性加载所有...

    安卓Android源码——gridview分页效果.rar

    这个"安卓Android源码——gridview分页效果.rar"文件很可能是包含了一个实现GridView分页效果的示例项目。分页在大数据量展示时尤为重要,因为它提高了用户体验,避免一次性加载大量数据导致应用性能下降或内存溢出...

    Android_ListView分页

    本篇文章将深入探讨如何在Android中实现ListView的分页功能。 一、ListView分页原理 分页的基本思想是将大量数据分成若干个小部分(每部分称为一页),每次只加载一部分数据到ListView中,当用户滚动到底部时,再...

    Android listView 分页功能

    本文将详细介绍如何在Android中实现ListView的分页功能,并结合给定的文件名"AndroidListViewFenye"来解析相关代码实现。 1. **ListView的基本理解** - ListView是Android提供的一个视图组件,用于显示一组长列表...

    baseAdapter的getView测试

    BaseAdapter是Android开发中一个非常重要的适配器类,它为ListView、GridView等视图控件提供了自定义数据源的支持。在本测试中,我们主要关注`getView()`方法,它是BaseAdapter的核心,负责将数据转化为可显示的View...

    android listview分页加载的demo【源代码】

    在Android中,我们通常会继承BaseAdapter或使用已有的如ArrayAdapter等来创建自定义Adapter。 3. **分页加载原理**: - 分页加载(Pagination)是一种常见的优化策略,避免一次性加载大量数据导致内存压力和用户...

    Android应用源码之gridview分页效果.rar

    这个“Android应用源码之gridview分页效果.rar”压缩包文件应该包含了一个实现了GridView分页功能的示例应用源代码。下面我们将深入探讨GridView和其分页实现的相关知识点。 1. GridView基本概念: GridView继承自...

    Android提高之SQLite分页读取实现方法

    本篇文章将详细阐述如何在Android的SQLite数据库中实现分页读取。 首先,我们需要了解SQLite的基本操作,包括创建数据库、创建表、插入数据以及查询数据。以下是一个简单的示例: 1. **创建数据库**: 在Android...

Global site tag (gtag.js) - Google Analytics