cursor 过滤 android,Android cursor query方法详解
1.cursor query 方法入參
public final Cursor query (Uri uri, String[] projection,String selection,String[] selectionArgs, String sortOrder)
第一個參數,uri,rui是什么呢?好吧,上面我們提到了Android提供內容的叫Provider,那么在Android中怎么區分各個Provider?有提供聯系人的,有提供圖片的等等。所以就需要有一個唯一的標識來標識這個Provider,Uri就是這個標識,android.provider.ContactsContract.Contacts.CONTENT_URI就是提供聯系人的內容提供者,可惜這個內容提供者提供的數據很少。
第二個參數,projection,真不知道為什么要用這個單詞,這個參數告訴Provider要返回的內容(列Column),比如Contacts Provider提供了聯系人的ID和聯系人的NAME等內容,如果我們只需要NAME,那么我們就應該使用:
Cursor cursor = contentResolver.query(android.provider.ContactsContract.Contacts.CONTENT_URI,
new String[]{android.provider.ContactsContract.Contacts.DISPLAY_NAME}, null, null, null);
當然,下面打印的你就只能顯示NAME了,因為你返回的結果不包含ID。用null表示返回Provider的所有內容(列Column)。
第三個參數,selection,設置條件,相當于SQL語句中的where。null表示不進行篩選。如果我們只想返回名稱為張三的數據,第三個參數應該設置為:
Cursor cursor = contentResolver.query(android.provider.ContactsContract.Contacts.CONTENT_URI,
new String[]{android.provider.ContactsContract.Contacts.DISPLAY_NAME},
android.provider.ContactsContract.Contacts.DISPLAY_NAME + "='張三'", null, null);
結果:
11-05 15:30:32.188: I/System.out(10271): 張三
第四個參數,selectionArgs,這個參數是要配合第三個參數使用的,如果你在第三個參數里面有?,那么你在selectionArgs寫的數據就會替換掉?,
Cursor cursor = contentResolver.query(android.provider.ContactsContract.Contacts.CONTENT_URI,
new String[]{android.provider.ContactsContract.Contacts.DISPLAY_NAME},
android.provider.ContactsContract.Contacts.DISPLAY_NAME + "=?",
new String[]{"張三"}, null);
效果和上面一句的效果一樣。
第五個參數,sortOrder,按照什么進行排序,相當于SQL語句中的Order by。如果想要結果按照ID的降序排列:
總結
以上是生活随笔為你收集整理的cursor 过滤 android,Android cursor query方法详解的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 电脑显示器有胶点(显示器有胶带粘过的痕迹
- 下一篇: android:background大小