2012-12-03 60 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)); 
     }