Android筆記 關於Cursor類的介紹

2021-08-19 06:51:09 字數 2558 閱讀 7575

使用過 sqlite資料庫的童鞋對 cursor 應該不陌生,加深自己和大家對android 中使用 cursor 的理解。

關於 cursor

在你理解和使用 android cursor 的時候你必須先知道關於 cursor 的幾件事情:

cursor 是每行的集合。使用 movetofirst() 定位第一行。你必須知道每一列的名稱。你必須知道每一列的資料型別。cursor 是乙個隨機的資料來源。所有的資料都是通過下標取得。

關於 cursor 的重要方法:

1 c.move(int offset); //

以當前位置為參考,移動到指定行

2 c.movetofirst(); //

移動到第一行

3 c.movetolast(); //

移動到最後一行

4 c.movetoposition(int position); //

移動到指定行

5 c.movetoprevious(); //

移動到前一行

6 c.movetonext(); //

移動到下一行

7 c.isfirst(); //

是否指向第一條

8 c.islast(); //

是否指向最後一條

9 c.isbeforefirst(); //

是否指向第一條之前

10 c.isafterlast(); //

是否指向最後一條之後

11 c.isnull(int columnindex); //

指定列是否為空(列基數為0)

12 c.isclosed(); //

游標是否已關閉

13 c.getcount(); //

總資料項數

14 c.getposition(); //

返回當前游標所指向的行數

15 c.getcolumnindex(string columnname);//

返回某列名對應的列索引值,如果不存在返回-1

16 c.getstring(int columnindex); //

返回當前行指定列的值

17 c·getcolumnindexorthrow(string columnname)——從零開始返回指定列名稱,如果不存在將丟擲illegalargumentexception 異常。

18 c.close()——關閉游標,釋放資源

下面來看看一段**: 

1      button query=(button) findviewbyid(r.id.query_data);

2 query.setonclicklistener(new

onclicklistener()while

(cursor.movetonext());22}

23cursor.close();24}

25 });

訪問 cursor 的下標獲得其中的資料

int namecolumnindex = cur.getcolumnindex(people.name);

string name = cur.getstring(namecolumnindex);

現在讓我們看看如何迴圈 cursor 取出我們需要的資料

while(cur.movetonext())

當cur.movetonext() 為假時將跳出迴圈,即 cursor 資料迴圈完畢。

·isbeforefirst()——返回游標是否指向之前第一行的位置

·isafterlast()——返回游標是否指向第最後一行的位置

·isclosed()——如果返回 true 即表示該遊戲標己關閉

有了以上的方法,可以如此取出資料

for(cur.movetofirst();!cur.isafterlast();cur.movetonext())

tip:在android 查詢資料是通過cursor 類來實現的。當我們使用 sqlitedatabase.query()方法時,就會得到cursor物件, cursor所指向的就是每一條資料。

cursor 位於 android.database.cursor類,可見出它的設計是基於資料庫服務產生的。

以上**:

另:activity.startmanagingcursor方法:

將獲得的cursor物件交與activity管理,這樣cursor物件的生命週期便能與當前的activity自動同步,省去了自己對cursor的管理。

1.這個方法使用的前提是:游標結果集裡有很多的資料記錄。

所以,在使用之前,先對cursor是否為null進行判斷,如果cursor != null,再使用此方法

2.如果使用這個方法,最後也要用stopmanagingcursor()來把它停止掉,以免出現錯誤。

3.使用這個方法的目的是把獲取的cursor物件交給activity管理,這樣cursor的生命週期便能和activity自動同步,省去自己手動管理。

android關於popupWindow不顯示問題

按照api和網上的例子,製作了乙個popupwindow的demo。但是popupwindow就是不顯示。後來發現必須設定popupwindow的寬度和高度,不然是顯示不出來的.以為popupwindow繫結自定義的view就可以了,還要設定高度和寬度.setcontentview view set...

關於android混淆

android studio新增混淆 1,在build.grandle新增,其中規則寫在proguard rules.pro中,也可以自定義乙個檔案,將其代替,比如eclipse常用的 proguard project.txt buildtypes 2,在proguard rules.pro中加入以...

android關於LinearLayout的坑

以前開始學的時候 我們都知道如果linearlayout的布局方向有兩種 1.horizontal 水平方向布局 2.vertical 垂直方向布局 如果linearlayout的布局方向是horizontal,內部的控制項就絕對不能將寬度指定為match parent,因為這樣的話,單獨乙個控制項...