Android初級教程は大量のデータに対してページを分けて理論の知識を処理します

2538 ワード

ロードするデータが千以上ある場合、ページのロードが遅くなることがあります(データのロードも時間のかかる操作です).そのため、ページングやバッチ表示も考慮します.まずいくつかのページの理論知識を紹介します.具体的にどこで使うかは、後続のブログで更新されます.
ページング情報
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;

	}

転載先:https://www.cnblogs.com/wanghang/p/6299637.html