Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android初級教程對大量數據的做分頁處理理論知識

Android初級教程對大量數據的做分頁處理理論知識

編輯:關於Android編程

有時候要加載的數據上千條時,頁面加載數據就會很慢(數據加載也屬於耗時操作)。因此就要考慮分頁甚至分批顯示。先介紹一些分頁的理論知識。對於具體用在哪裡,會在後續博客中更新。
分頁信息

1,一共多少條數據

   select count(*) from blacktb;
   性能低下
         原因: sql解析器先查詢數據字典,把*轉成所有的列名和列的類型

               然後把每行數據提取出來
               最後統計多少行數據

   select count(常量) from blacktb;
   高性能的查詢
             不需要每行的記錄,只需要行數

2,指定每頁顯示多少條

 需求制定每頁行數 如: 20

3,計算出共多少頁

  int pages = (int)Math.ceil(201 * 1.0 / 20); // 10.05

4,取每頁的信息 3頁的數據

  select * from blacktb limit 取多少條 offset 從哪條數據;
  select * from blacktb limit 行的起始位置 , 多少條數據;

  如:取第3頁  PageNumber每頁顯示多少條數據 
  select * from blacktb limit (3 - 1)*PageNumber,PageNumber

一般數據在數據庫中取到顯示的。根據上述理論知識,下面給一些查詢數據庫的一些偽代碼。在項目中使用分頁的時候,直接套用即可:  
/**
	 * @return 總數據個數
	 */
	public int getTotalRows() {
		SQLiteDatabase database = blackDB.getReadableDatabase();
		Cursor cursor = database.rawQuery("select count(1) from "
				+ BlackTable.BLACKTABLE, null);
		cursor.moveToNext();
		// 總行數
		int totalRows = cursor.getInt(0);

		cursor.close();// 關閉游標
		return totalRows;
	}
	
	
	/**
	 * @param currentPage
	 *            當前頁的頁碼
	 * @param perPage
	 *            每頁顯示多少條數據
	 * @return 當前頁的數據
	 */
	public List getPageDatas(int currentPage, int perPage) {
		List datas = new ArrayList();
		SQLiteDatabase database = blackDB.getReadableDatabase();
		// 獲取blacktb的所有數據游標 (2 + 3) + ""
		Cursor cursor = database.rawQuery("select " + BlackTable.PHONE + ","
				+ BlackTable.MODE + " from " + BlackTable.BLACKTABLE
				+ " limit ?,? ", new String[] {((currentPage - 1) * perPage) + "",perPage + ""});

		while (cursor.moveToNext()) {
			// 有數據,數據封裝
			BlackBean bean = new BlackBean();

			// 封裝黑名單號碼
			bean.setPhone(cursor.getString(0));

			// 封裝攔截模式
			bean.setMode(cursor.getInt(1));

			// 添加數據到集合中
			datas.add(bean);
		}

		cursor.close();// 關閉游標
		database.close();// 關閉數據庫

		return datas;

	}

	/**
	 * @param perPage
	 *            指定每頁顯示多少條數據
	 * @return 總頁數
	 */
	public int getTotalPages(int perPage) {
		int totalRows = getTotalRows();
		// 計算出多少頁,采用ceil函數,返回不小於該數的最小整數 如 :6.1 返回7.0
		int totalPages = (int) Math.ceil(totalRows * 1.0 / perPage);
		return totalPages;

	}
 
  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved