當前位置:首頁 » 安卓系統 » android分頁查詢語句

android分頁查詢語句

發布時間: 2023-05-20 03:04:06

A. Android listview怎麼實現滾動分頁

通常這也分為兩種方式,一種是設置一個按鈕,用戶點擊即載入。另一種是當用戶滑動到底部時自動載入。今天我就和大家分享一下這個功能的實現。
首先,寫一個xml文件,moredata.xml,該文件即定義了放在listview底部的視圖:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<Button
android:id="@+id/bt_load"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="載入更多數據" />
<ProgressBar
android:id="@+id/pg"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:visibility="gone"
/>
</LinearLayout>

可以看到是一個按鈕和一個進度條。因為只做一個演示,這里簡單處理,通過設置控制項的visibility,未載入時顯示按鈕,載入時就顯示進度條。
寫一個item.xml,大家應該很熟悉了。用來定義listview的每個item的視圖。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >

<TextView
android:id="@+id/tv_title"
android:textSize="20sp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="5dp"
/>
<TextView
android:textSize="12sp"
android:id="@+id/tv_content"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="5dp"
/>

</LinearLayout>

main.xml就不貼了,整個主界面就一個listview。
直接先看下Activity的代碼,在裡面實現分頁效果。

package com.notice.moredate;

import java.util.ArrayList;
import java.util.HashMap;

import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.AbsListView;
import android.widget.AbsListView.OnScrollListener;
import android.widget.Button;
import android.widget.ListView;
import android.widget.ProgressBar;
import android.widget.SimpleAdapter;
import android.widget.Toast;

public class MoreDateListActivity extends Activity implements OnScrollListener {

// ListView的Adapter
private SimpleAdapter mSimpleAdapter;
private ListView lv;
private Button bt;
private ProgressBar pg;
private ArrayList<HashMap<String,String>> list;
// ListView底部View
private View moreView;
private Handler handler;
// 設置一個最大的數據條數,超過即不再載入
private int MaxDateNum;
// 最後可見條目的索引
private int lastVisibleIndex;

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

MaxDateNum = 22; // 設置最大數據條數

lv = (ListView) findViewById(R.id.lv);

// 實例化底部布局
moreView = getLayoutInflater().inflate(R.layout.moredate, null);

bt = (Button) moreView.findViewById(R.id.bt_load);
pg = (ProgressBar) moreView.findViewById(R.id.pg);
handler = new Handler();

// 用map來裝載數據,初始化10條數據
list = new ArrayList<HashMap<String,String>>();
for (int i = 0; i < 10; i++) {
HashMap<String, String> map = new HashMap<String, String>();
map.put("ItemTitle", "第" + i + "行標題");
map.put("ItemText", "第" + i + "行內容");
list.add(map);
}
// 實例化SimpleAdapter
mSimpleAdapter = new SimpleAdapter(this, list, R.layout.item,
new String[] { "ItemTitle", "ItemText" },
new int[] { R.id.tv_title, R.id.tv_content });
// 加上底部View,注意要放在setAdapter方法前
lv.addFooterView(moreView);
lv.setAdapter(mSimpleAdapter);
// 綁定監聽器
lv.setOnScrollListener(this);

bt.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View v) {
pg.setVisibility(View.VISIBLE);// 將進度條可見
bt.setVisibility(View.GONE);// 按鈕不可見

handler.postDelayed(new Runnable() {

@Override
public void run() {
loadMoreDate();// 載入更多數據
bt.setVisibility(View.VISIBLE);
pg.setVisibility(View.GONE);
mSimpleAdapter.notifyDataSetChanged();// 通知listView刷新數據
}

}, 2000);
}
});

}

private void loadMoreDate() {
int count = mSimpleAdapter.getCount();
if (count + 5 < MaxDateNum) {
// 每次載入5條
for (int i = count; i < count + 5; i++) {
HashMap<String, String> map = new HashMap<String, String>();
map.put("ItemTitle", "新增第" + i + "行標題");
map.put("ItemText", "新增第" + i + "行內容");
list.add(map);
}
} else {
// 數據已經不足5條
for (int i = count; i < MaxDateNum; i++) {
HashMap<String, String> map = new HashMap<String, String>();
map.put("ItemTitle", "新增第" + i + "行標題");
map.put("ItemText", "新增第" + i + "行內容");
list.add(map);
}
}

}

@Override
public void onScroll(AbsListView view, int firstVisibleItem,
int visibleItemCount, int totalItemCount) {
// 計算最後可見條目的索引
lastVisibleIndex = firstVisibleItem + visibleItemCount - 1;

// 所有的條目已經和最大條數相等,則移除底部的View
if (totalItemCount == MaxDateNum + 1) {
lv.removeFooterView(moreView);
Toast.makeText(this, "數據全部載入完成,沒有更多數據!", Toast.LENGTH_LONG).show();
}

}

@Override
public void onScrollStateChanged(AbsListView view, int scrollState) {
// 滑到底部後自動載入,判斷listview已經停止滾動並且最後可視的條目等於adapter的條目
if (scrollState == OnScrollListener.SCROLL_STATE_IDLE
&& lastVisibleIndex == mSimpleAdapter.getCount()) {
// 當滑到底部時自動載入
// pg.setVisibility(View.VISIBLE);
// bt.setVisibility(View.GONE);
// handler.postDelayed(new Runnable() {
//
// @Override
// public void run() {
// loadMoreDate();
// bt.setVisibility(View.VISIBLE);
// pg.setVisibility(View.GONE);
// mSimpleAdapter.notifyDataSetChanged();
// }
//
// }, 2000);

}

}

}

B. android sqlite查詢語句 db.query

在orderby這個子串叢飢鄭後面加「 DESC」,就是降序排列。

默認情況肢彎是升滲頌序排列。

C. 我剛學Android不久。關於Android中的SQLite怎麼執行查詢語句,,,急。。。。。。。。

有正凱吵個sqliteDatebaseHelper 類,這個類里舉侍面有個query方法用來查詢數據,返回孫旦的是cursor對象

D. android軟體開發怎樣實現分頁功能

ListView分頁:
(一)、目的:
Android 應用開發中,採用ListView組件來展示數據是很常用的功能,當一個應用要展現很多的數據時,一般情況下都不會把所有的數據一次就展示出來,而是通過 分頁的形式來展示數據,這樣會有更好的用戶體驗。因此,很多應用都是採用分批次載入的形式來獲取用戶所需的數據。例如:微博客戶端可能會在用戶滑 動至列表底端時自動載入下一頁數據,也可能在底部放置一個"查看更多"按鈕,用戶點擊後,載入下一頁數據。
(二)、核心技術點:
藉助 ListView組件的OnScrollListener監聽事件,去判斷何時該載入新數據;
往伺服器get傳遞表示頁碼的參數:page。而該page會每載入一屏數據後自動加一;
利用addAll()方法不斷往list集合末端添加新數據,使得適配器的數據源每新載入一屏數據就發生變化;
利用適配器對象的notifyDataSetChanged()方法。該方法的作用是通知適配器自己及與該數據有關的view,數據已經發生變動,要刷新自己、更新數據。

(三)、 OnScrollListener監聽事件 :
1、該監聽器中有兩個需要實現的方法:
onScrollStateChanged(AbsListView view, int scrollState):監聽屏幕的滾動狀態的變動情況
onScroll(AbsListView view, int firstVisibleItem,int visibleItemCount, int totalItemCount):監聽屏幕滾動的item的數量
2、 scrollState 回調順序如下:
第1次:scrollState = SCROLL_STATE_TOUCH_SCROLL(1):表示正在滾動。當屏幕滾動且用戶使用的觸碰或手指還在屏幕上時為1
第2次:scrollState =SCROLL_STATE_FLING(2) :表示手指做了拋的動作(手指離開屏幕前,用力滑了一下,屏幕產生慣性滑動)。
第3次:scrollState =SCROLL_STATE_IDLE(0) :表示屏幕已停止。屏幕停止滾動時為0。
3、 onScroll中參數講解:
firstVisibleItem:當前窗口中能看見的第一個列表項ID(從0開始)
visibleItemCount:當前窗口中能看見的列表項的個數(小半個也算)
totalItemCount:列表項的總數
4、思路:
當滾到最後一條,載入新數據;
適配器的數據源要進行累加:totalList.addAll(list);
數據發生變化,適配器通知:adapter.notifyDataSetChanged();【牢記】
判斷是否滾到最後一行。
(五)、核心代碼:

1、布局文件的核心代碼:

<RelativeLayoutxmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent">

<ListView
android:id="@+id/listView_main"
android:layout_below="@+id/button_main_init"
android:layout_width="match_parent"
android:layout_height="match_parent">
</ListView>

<LinearLayout
android:id="@+id/layout_main_nextpage"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:background="#000"
android:visibility="invisible"
android:gravity="center"
android:onClick="clickButton"
android:padding="5dp">

<ProgressBar
android:id="@+id/progressBar_main"
style="?android:attr/progressBarStyleSmall"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>

<TextView
android:id="@+id/text_main_nextpage"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="10dp"
android:textSize="18sp"
android:onClick="clickButton"
android:textColor="#fff"
android:text="點擊載入更多數據"/>
</LinearLayout>

</RelativeLayout>
2、Activity頁面核心代碼:

publicclass MainActivity extends Activity {
privateStringTAG= "MainActivity";
privateListView listView_main;
privateLinearLayout layout_main_nextpage;

private MySQLiteDatabaseHelper dbHelper = null;

// 用於分頁顯示數據的屬性
privateintpageSize= 30;// 每頁顯示的條數
privateintcurPage= 1;
privateintrowCount= 0;
privateintpageCount= 0;// 總頁數

privatebooleanisBottom=false;// 判斷是否滾動到數據最後一條
private List<Map<String, Object>> totalList = null;// 載入到適配器中的數據源
private SimpleAdapter adapter = null;

@Override
protectedvoid onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

listView_main = (ListView) findViewById(R.id.listView_main);
layout_main_nextpage = (LinearLayout) findViewById(R.id.layout_main_nextpage);

// 實例化訪問資料庫幫助類
dbHelper = new MySQLiteDatabaseHelper();
// 獲取數據表一共有多少條,從而計算共有多少頁
rowCount=dbHelper.selectCount("select id from android_basic",null);
// 計算總頁碼數
pageCount = (int) Math.ceil(rowCount / (float) pageSize);

// 如果當前頁為第一頁,則數據源集合中就是第一頁的內容
if (curPage == 1) {
totalList = getCurpageList(1);
}
adapter = new SimpleAdapter(this, totalList,
R.layout.item_listview_main, new String[] { "_id", "title" },
newint[] { R.id.text_item_listview_id,
R.id.text_item_listview_title});
listView_main.setAdapter(adapter);

// 給ListView對象設置滾動監聽器,以此來判斷是否已經滾動到最後一條,從而決定是否載入新數據
listView_main.setOnScrollListener(new OnScrollListener() {
@Override
publicvoid onScrollStateChanged(AbsListView view, int scrollState) {
if (isBottom) {
// 如果滾到最後一條數據(即:屏幕最底端),則顯示:「載入更多新數據」
if(curPage < pageCount) {
layout_main_nextpage.setVisibility(View.VISIBLE);
}
} else {
layout_main_nextpage.setVisibility(View.GONE);
}
}

@Override
publicvoid onScroll(AbsListView view, int firstVisibleItem,
int visibleItemCount, int totalItemCount) {
// Log.i(TAG, "==" + firstVisibleItem + ":::" + visibleItemCount
// + ":::" + totalItemCount);
// 判斷是否已經滾動到了最後一條,從而決定是否提示載入新數據
isBottom = (firstVisibleItem + visibleItemCount == totalItemCount);
}
});
}

publicvoid clickButton(View view) {
switch (view.getId()) {
caseR.id.layout_main_nextpage:
// Log.i(TAG, "==" + curPage + ":::" + pageCount);
// 如果不是最後一頁,則讓當前頁碼累加,讓數據源累加新數據,並通知適配器信息發生變化
if(curPage < pageCount) {
curPage++;
totalList.addAll(getCurpageList(curPage));
adapter.notifyDataSetChanged();
}
// 只要點擊了提示「載入新數據」的信息,就讓其隱藏
layout_main_nextpage.setVisibility(View.GONE);
break;
default:
break;
}
}

// 獲取每一頁的數據,返回List集合
private List<Map<String, Object>> getCurpageList(int currentPage) {
int offset = (currentPage - 1) * pageSize;
String sql = "select id _id ,title from android_basic limit ? , ?";
returndbHelper.selectData(sql, new String[] { offset + "",
pageSize + "" });
}

}

E. Android 如何進行分頁請求

在請求的凱握時候帶的參數是頁數和每頁的條盯亮慶數,然後每次請求的時候頁數加1,請求的數據添加到適配器鍵備中就可以了

F. android sqllite query()查詢

public Cursor query (String table, String[] columns, String selection, String[] selectionArgs,String groupBy, String having,String orderBy,String limit)參數如下:
table:表名。相當於select語句from關鍵字後面的部分。如果是多表聯合查詢,可以用逗號將兩個表名分開。
columns:要查詢出來的列名。相當於select語句select關鍵字後面的部分。
selection:查詢條件子句,相當於select語句where關鍵字後面的部分,在條件子句允許使用佔位符「?」
selectionArgs:對應於selection語句中佔位符的值,值在數組中的位置與佔位符在語句中的位置必須一致,否則就會有異常。
groupBy:相當於select語句group by關鍵字後面的部分
having:相當於select語句having關鍵字後面的部分
orderBy:相當於select語句order by關鍵字後面的部分,如:personid desc, age asc;
limit:指定偏移量和獲取的記錄數,相當於select語句limit關鍵字後面的部分。

G. android中的listview怎樣實現分頁顯示

給你個思路哈,布局的時候一個listview,下面添加上一頁下一頁按鈕,比如每頁顯示10頁,那麼對於數據的處理,可以通過AsyncTask或者Thread非同步獲取數據並更新listview綁定的數據集,之後通過listview的adapter自帶的notifyDataSetChanged來更新視圖,對於數據的處理,說說我能想到的兩種方式吧

  1. 每次只獲取1頁的數據(通過sql語句可控)並記住數據的編號,之後每次點擊上一頁或者下一頁都重新獲取並更新

  2. 獲取所有的數據,每次顯示一部分。

這就是我粗淺的方案了啊,希望對你有幫助哦~如果有更靠譜的方案記得要分享哈。

H. android 下拉分頁,重復數據問題

資料庫查詢的時候可以設置查詢起始項和查詢個數的,這是兩個查詢參數,一般要查詢的個數都是不變的,比如我每次要查詢10條數據,這個是就設置為10.但是每次載入新數據從資料庫獲取數含搜據時起始項是不一樣的,比如資料庫有21條數據,第一次查詢後顯示10條,那麼起始項此時要變為0+10就是10,第二次查詢後為10+10=20,第三次就不一樣了,因為要查詢的數據只有1條了,橘老早所以每次要比較查詢到的數據和設定的查詢個數大小,因為1<10,所以此圓雀時查詢的起始項要變為20+1=21.至於你說的新加了一條數據的話,那就屬於數據存儲的問題了,一般最後增加的數據要按時間排到最後,那麼就不會出現重復的問題了。

熱點內容
ftp登錄需要輸入用戶名和密碼 發布:2025-02-13 06:03:33 瀏覽:398
數控編程代表 發布:2025-02-13 05:58:51 瀏覽:385
編程凸輪 發布:2025-02-13 05:38:21 瀏覽:691
判斷素數的編程 發布:2025-02-13 05:29:25 瀏覽:618
androidaes加密 發布:2025-02-13 05:08:36 瀏覽:493
李宗瑞文件夾 發布:2025-02-13 04:27:59 瀏覽:611
phpparent的parent 發布:2025-02-13 04:18:08 瀏覽:457
小容量存儲器市場 發布:2025-02-13 04:01:11 瀏覽:373
ickeck文件夾 發布:2025-02-13 04:00:21 瀏覽:644
上傳照片文案 發布:2025-02-13 03:53:13 瀏覽:426