2012-12-03 86 views
1

我對使用內容提供者有點新。我想知道如何從內容提供商獲取特定的行?如何從ContentProvider獲取特定的行?

例如,我將如何獲得我的提供者的第一行?

這是我試過,但它不是工作:

final Cursor cursorConversations = getActivity().getContentResolver() 
       .query(CONTENT_URI, null, null, null, null); 

Toast.makeText(
     getActivity(), 
     cursorConversations.getString(cursorConversations 
     .getColumnIndex(Columns.TITLE)), 
     Toast.LENGTH_LONG).show(); 

回答

2

您只需使用鼠標移動方法例如:

cursorConversations.moveToFirst(); 
    cursorConversations.moveToPosition(0); 
    cursorConversations.moveToNext(); // <-- if at beginning position 

只是爲了讓這個回答一點肉,用一個流行的技術通過光標1的由1從一開始的行循環爲:

while (cursorConversations.moveToNext()) { 
     // do something 
    } 

Becau如果moveToNext()方法(以及其他move方法)返回布爾值,則循環將在到達最後一行時退出,並且不能再移動到下一行。有效和容易的眼睛。還有一點提示:在基於零的查詢索引結果的第一個位置之前,光標從-1索引處開始。

2

使用這樣的事:---

if(cursorConversations.moveToFirst()){ 
int size=cursorConversations.getCount(); 
for(int i=0;i<size;i++){ 
cursorConversations.getString(cursorConversations 
    .getColumnIndex(Columns.TITLE)); 
cursorConversations.moveToNext(); 
} 
} 
cursorConversations.close(); 

或者

 while(cursorConversations.moveTonext()) 
     { 
      cursorConversations.getString(cursorConversations 
    .getColumnIndex(Columns.TITLE)); 
     }