main.xml:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/mylayout" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent"> </LinearLayout>
tab_info.xml:
<?xml version="1.0" encoding="utf-8"?> <TableLayout android:layout_width="fill_parent" xmlns:android="http://schemas.android.com/apk/res/android" android:layout_height="wrap_content"> <TableRow> <TextView android:id="@+id/id" android:textSize="30px" android:layout_height="wrap_content" android:layout_width="50px"/> <TextView android:id="@+id/name" android:textSize="30px" android:layout_height="wrap_content" android:layout_width="130px"/> <TextView android:id="@+id/birthday" android:textSize="30px" android:layout_height="wrap_content" android:layout_width="180px"/> </TableRow> </TableLayout>
MySQLiteDemo.java:
import java.util.List; import java.util.Map; import android.app.Activity; import android.database.sqlite.SQLiteOpenHelper; import android.os.Bundle; import android.view.Gravity; import android.widget.AbsListView; import android.widget.AbsListView.OnScrollListener; import android.widget.LinearLayout; import android.widget.LinearLayout.LayoutParams; import android.widget.ListView; import android.widget.SimpleAdapter; import android.widget.TextView; public class MySQLiteDemo extends Activity { private SQLiteOpenHelper helper = null ; // 数据库操作 private LinearLayout mylayout = null ; // 定义布局管理器 private ListView listView ; // ListView组件 private int currentPage = 1 ; // 当前页 private int lineSize = 15 ; // 每页显示15条数据 private int allRecorders = 0 ; // 保存全部记录数 private int pageSize = 1 ; // 总页数 private int lastItem = 0 ; // 保存最后一个记录点 private SimpleAdapter simpleAdapter = null; // 适配器 private LinearLayout loadLayout = null ; // 定义布局管理器 private TextView loadInfo = null ; // 定义提示文本 private List<Map<String, Object>> all = null ; // 保存适配器数据 private LayoutParams layoutParams = new LinearLayout.LayoutParams( LinearLayout.LayoutParams.FILL_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT); // 布局参数 @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // 父类onCreate() super.setContentView(R.layout.main); // 默认布局管理器 this.mylayout = (LinearLayout) super.findViewById(R.id.mylayout) ; // 取得组件 this.loadLayout = new LinearLayout(this) ; // 定义线性布局管理器 this.helper = new MyDatabaseHelper(this) ; // 定义数据库辅助类 this.loadInfo = new TextView(this) ; // 实例化文本组件 this.loadInfo.setText("数据加载中ing..") ; // 定义文本 this.loadInfo.setGravity(Gravity.CENTER) ; // 文字居中显示 this.loadInfo.setTextSize(30.0f) ; // 设置显示文字大小 this.loadLayout.addView(this.loadInfo, this.layoutParams);// 增加新组件 this.loadLayout.setGravity(Gravity.CENTER) ; // 数据居中显示 this.showAllData() ; // 显示数据 this.pageSize = (this.allRecorders + this.currentPage - 1) / this.lineSize; // 求出总页数 } private class OnScrollListenerImpl implements OnScrollListener { @Override public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) { MySQLiteDemo.this.lastItem = firstVisibleItem + visibleItemCount - 1; } @Override public void onScrollStateChanged(AbsListView view, int scrollState) { if (MySQLiteDemo.this.lastItem == MySQLiteDemo.this.simpleAdapter.getCount() // 当前记录已经是在最底部 && MySQLiteDemo.this.currentPage < MySQLiteDemo.this.pageSize // 当前页小于总页数 && scrollState == OnScrollListener.SCROLL_STATE_IDLE) { // 屏幕不再滚动时触发 MySQLiteDemo.this.currentPage ++ ; // 修改当前所在页 MySQLiteDemo.this.listView .setSelection(MySQLiteDemo.this.lastItem); // 设置显示位置 MySQLiteDemo.this.appendData() ; // 刷新显示数据 } } } private void showAllData() { this.helper = new MyDatabaseHelper(MySQLiteDemo.this) ; // 实例化对象 this.listView = new ListView(MySQLiteDemo.this); // 定义ListView MytabCursor cur = new MytabCursor(this.helper .getReadableDatabase()) ; // 数据库查询操作 this.allRecorders = cur.getCount() ; // 查询全部记录数 this.all = cur.find(this.currentPage, this.lineSize); // 取出查询数据 this.simpleAdapter = new SimpleAdapter (this , all, // 将数据包装 R.layout.tab_info, // 每行显示一条数据 new String[] { "id", "name","birthday" } , // 设置组件的字段 new int[] { R.id.id, R.id.name, R.id.birthday }); // 实例化适配器对象 this.listView.addFooterView(MySQLiteDemo.this.loadLayout) ; // 增加一个标注 this.listView.setAdapter(this.simpleAdapter); // 设置显示数据 this.listView.setOnScrollListener(new OnScrollListenerImpl()) ; // 设置滚动监听 MySQLiteDemo.this.mylayout.addView(this.listView); // 追加组件 } private void appendData() { // 追加新数据 MytabCursor cur = new MytabCursor(this.helper .getReadableDatabase()) ; // 数据库查询操作 List<Map<String, Object>> newData = cur.find(this.currentPage, this.lineSize); // 取出查询数据 this.all.addAll(newData) ; // 追加数据 this.simpleAdapter.notifyDataSetChanged() ; // 更新记录通知 } }
MytabCursor.java:
import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; public class MytabCursor { private static final String TABLENAME = "mytab" ; // 数据表名称 private SQLiteDatabase db = null ; // SQLiteDatabase public MytabCursor(SQLiteDatabase db) { // 构造方法 this.db = db ; // 接收SQLiteDatabase } public int getCount() { // 返回记录数 int count = 0 ; // 保存返回结果 String sql = "SELECT COUNT(id) FROM " + TABLENAME ; // 查询SQL Cursor result = db.rawQuery(sql, null); // 查询 for (result.moveToFirst(); !result.isAfterLast(); result.moveToNext()) { count = result.getInt(0) ; // 取出查询结果 } return count ; } public List<Map<String,Object>> find(int currentPage, int lineSize) { // 查询数据表 List<Map<String,Object>> all = new ArrayList<Map<String,Object>>() ;// 定义List集合 String sql = "SELECT id,name,birthday FROM " + TABLENAME + " LIMIT ?,? " ; // 查询SQL String selectionArgs[] = new String[] { String.valueOf((currentPage - 1) * lineSize), String.valueOf(lineSize) }; // 查询参数 Cursor result = db.rawQuery(sql, selectionArgs); // 查询 for (result.moveToFirst(); !result.isAfterLast(); result.moveToNext()) { Map<String,Object> map = new HashMap<String,Object>() ; map.put("id", result.getInt(0)); // 取出id字段的内容 map.put("name", result.getString(1)); // 取出name字段的内容 map.put("birthday", result.getString(2)); // 取出birthday字段的内容 all.add(map); // 向集合保存 } this.db.close() ; // 关闭数据库连接 return all ; } }
相关推荐
http://blog.csdn.net/icqapp/article/details/24978057 详看效果图...android listview左右滑动分页(viewpager嵌套listview进行分页),焦点图带圆焦点 先敬告学者:如在此项目上运行不了的直接找到本人QQ:508181017,
本篇文章将详细讲解如何实现Android ListView的滑动分页功能。 首先,理解滑动分页的基本原理。滑动分页基于“按需加载”的概念,即仅在用户滚动到列表底部时才请求服务器获取新的数据。这样避免了一次性加载所有...
在Android开发中,分页是一种常见的用户界面设计技术,它允许...通过研究和理解paginationListViewDemo,开发者可以学习如何在实际项目中实现分页功能,无论是按钮分页还是滑动分页,都能提供流畅且高效的用户体验。
在安卓系统中,Launcher是用户接触最频繁的组件之一,它是设备主屏幕,包含了应用快捷方式、小部件等元素,并支持横向滑动切换分页。本压缩包中的"TestPagedView"文件很可能是实现这一功能的一个示例或实验性的源...
总的来说,这个"android 左右滑动分页源码"是一个很好的学习资源,可以帮助开发者深入理解 ViewPager 和其适配器的工作机制,同时提供了一个实际的实现案例,方便进行二次开发和定制。通过研究和实践,开发者能够更...
综上所述,通过学习和实践这些资源,开发者能够掌握在Android应用中集成滑动菜单和滑动分页的基本技能,提高应用的交互性和用户友好性。同时,理解并掌握这些库的内部工作原理,也能为自定义功能和优化性能打下基础...
本教程将深入讲解如何利用RecyclerView实现横向和纵向的分页滑动,充分利用Android原生功能。 首先,理解RecyclerView的基本结构。RecyclerView包含一个Adapter,它负责将数据集绑定到视图上,以及一个...
在Android开发中,创建一个带有滑动分页效果的Tab组件是常见的需求,尤其是在构建具有多个子页面的应用中。`ViewPager` 和 `TabLayout` 是Android Support Library中的两个关键组件,用于实现这种交互式界面。本篇...
这个教程将深入探讨如何在Android应用中实现ViewPage的水平滑动分页,并添加Indicator。 首先,`ViewPage`是Android SDK提供的一种可滚动视图容器,它可以包含多个`Fragment`或`View`。通过设置适配器...
综上所述,实现Android GridView的分页和滑动效果涉及到的主要知识点包括:GridView的基础用法、Adapter的使用、滚动事件监听、自定义滚动效果以及用户体验优化。理解并掌握这些内容,可以帮助开发者创建出更加动态...
Android 仿抖音上下滑动布局详解 Android 仿抖音上下滑动布局是指在 Android 应用程序中实现类似抖音 App 的上下滑动布局效果,该效果可以实现上下滑动、监听播放、自动吸顶、吸底等功能。本文将详细介绍 Android ...
本项目着重讲解如何在Android平台上创建一个具备滑动分页功能的“Metro效果”应用。 首先,我们要了解“ViewPager”组件。ViewPager是Android SDK中用于实现页面滑动效果的核心组件,它可以展示多个页面,并允许...
在Android开发中,垂直分页滑动是一种常见的用户界面设计,尤其在展示大量数据或内容时,如新闻、电商商品列表等。这个源码提供了一种实现方式,名为"D_VScrollerView",它允许用户在垂直方向上平滑地浏览不同页面。...
在Android开发中,"android滑动分页"是一种常见的用户界面设计,用于提供流畅的多页面浏览体验。这种设计通常采用ViewPager组件来实现,它允许用户通过左右滑动来切换不同的页面,非常适合用来展示照片或者内容丰富...
在Android中实现ListView的水平滑动分页,主要涉及到以下几个关键知识点: 1. **自定义Adapter**:首先,你需要创建一个自定义的Adapter,这个Adapter需要能够处理水平布局的数据。这通常意味着你需要重写`getView...
Android开发中滑动分页功能实例详解 Android开发中滑动分页功能是指在Android应用程序中实现滑动分页的功能,以便用户可以滑动屏幕来查看更多的内容。滑动分页功能可以应用于各种Android应用程序中,如新闻阅读器...
在Android开发中,ListView是常用的数据展示控件,用于显示大量的列表数据。为了提供更好的用户体验,通常会添加下拉刷新和上拉加载更多的功能。这些功能使得用户可以在滚动到列表顶部时更新数据(下拉刷新),或者...
本篇文章将深入探讨如何在Android中结合SQLite实现滑动分页加载。 首先,我们需要了解SQLite的基本操作,包括创建数据库、表,以及插入、查询和更新数据。在Android中,通常通过SQLiteOpenHelper类来管理数据库的...
这个"Android应用源码之Android Launcher 桌面分页滑动代码"压缩包,显然是为了帮助开发者深入理解Android Launcher的实现原理,特别是关于桌面分页滑动的部分。下面将详细解析这个主题。 一、Android Launcher概述...