本文实例讲述了AndroID实现基于滑动的sqlite数据分页加载技术。分享给大家供大家参考,具体如下:
main.xml如下:
<menu xmlns:androID="http://schemas.androID.com/apk/res/androID" > <item androID:ID="@+ID/action_settings" androID:orderIncategory="100" androID:showAsAction="never" androID:title="@string/action_settings"/></menu>
MainActivity.java如下:
package com.example.testscrollsqlite;import java.util.ArrayList;import androID.app.Actionbar.LayoutParams;import androID.app.Activity;import androID.os.Bundle;import androID.vIEw.Gravity;import androID.vIEw.Menu;import androID.vIEw.VIEw;import androID.vIEw.VIEwGroup;import androID.Widget.AbsListVIEw;import androID.Widget.AbsListVIEw.OnScrollListener;import androID.Widget.Adapter;import androID.Widget.BaseAdapter;import androID.Widget.linearLayout;import androID.Widget.ListVIEw;import androID.Widget.TextVIEw;public class MainActivity extends Activity implements OnScrollListener{ private TextVIEw loadInfo; private ListVIEw ListVIEw; private linearLayout loadLayout; private ArrayList<String> items; private DatabaseService service; private int currentPage = 1; //默认在第一页 private static final int linesize = 7; //每次显示数 private int allRecorders = 0; //全部记录数 private int pageSize = 1; //默认共一页 private int lastItem; private aleph0 baseAdapter; @OverrIDe protected voID onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentVIEw(R.layout.activity_main); ListVIEw = (ListVIEw) findVIEwByID(R.ID.ListvIEw); //创建一个角标线性布局用来显示"正在加载" loadLayout = new linearLayout(this); loadLayout.setGravity(Gravity.CENTER); //定义一个文本显示“正在加载” loadInfo = new TextVIEw(this); loadInfo.setText("正在加载..."); loadInfo.setGravity(Gravity.CENTER); //增加组件 loadLayout.addVIEw(loadInfo,new LayoutParams( linearLayout.LayoutParams.MATCH_PARENT,linearLayout.LayoutParams.WRAP_CONTENT)); //增加到ListVIEw底部 ListVIEw.addFooterVIEw(loadLayout); ListVIEw.setonScrollListener(this); showAllData(); } /** * 读取全部数据 */ public voID showAllData(){ service = new DatabaseService(this); allRecorders = service.getCount(); //计算总页数 pageSize = (allRecorders + linesize -1) / linesize; System.out.println("allRecorders = " + allRecorders); System.out.println("pageSize = " + pageSize); items = service.getAllitems(currentPage,linesize); for(int i=0; i<items.size(); i++){ System.out.println(items.get(i)); } baseAdapter = new aleph0(); ListVIEw.setAdapter(baseAdapter); } @OverrIDe public voID onScroll(AbsListVIEw vIEw,int firstVisible,int visibleCount,int totalCount) { lastItem = firstVisible + visibleCount - 1; //统计是否到最后 } @OverrIDe public voID onScrollStateChanged(AbsListVIEw vIEw,int scorllState) { System.out.println("进入滚动界面了"); //是否到最底部并且数据没读完 if(lastItem == baseAdapter.getCount() && currentPage < pageSize //不再滚动 && scorllState == OnScrollListener.SCRolL_STATE_IDLE){ currentPage ++; //设置显示位置 ListVIEw.setSelection(lastItem); //增加数据 appendDate(); } } /** * 增加数据 */ private voID appendDate(){ ArrayList<String> additems = service.getAllitems(currentPage,linesize); baseAdapter.setCount(baseAdapter.getCount() + additems.size()); //判断,如果到了最末尾则去掉“正在加载” if(allRecorders == baseAdapter.getCount()){ ListVIEw.removeFooterVIEw(loadLayout); } items.addAll(additems); //通知记录改变 baseAdapter.notifyDataSetChanged(); } class aleph0 extends BaseAdapter { int count = linesize; /* starting amount */ public int getCount() { return count; } public voID setCount(int count){ this.count = count; } public Object getItem(int pos) { return pos; } public long getItemID(int pos) { return pos; } public VIEw getVIEw(int pos,VIEw v,VIEwGroup p) { TextVIEw vIEw = new TextVIEw(MainActivity.this); vIEw.setTextSize(60); if(items != null){ vIEw.setText(items.get(pos)); }else{ vIEw.setText(pos); } return vIEw; } }}
完整实例代码点击此处本站下载。
更多关于AndroID相关内容感兴趣的读者可查看本站专题:《Android *** 作SQLite数据库技巧总结》、《Android *** 作json格式数据技巧总结》、《Android数据库 *** 作技巧总结》、《Android编程之activity *** 作技巧总结》、《Android文件 *** 作技巧汇总》、《Android编程开发之SD卡 *** 作方法汇总》、《Android开发入门与进阶教程》、《Android资源 *** 作技巧汇总》、《Android视图View技巧总结》及《Android控件用法总结》
希望本文所述对大家AndroID程序设计有所帮助。
总结以上是内存溢出为你收集整理的Android实现基于滑动的SQLite数据分页加载技术(附demo源码下载)全部内容,希望文章能够帮你解决Android实现基于滑动的SQLite数据分页加载技术(附demo源码下载)所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)