使用過 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,因為這樣的話,單獨乙個控制項...