1

我对使用内容提供商有点陌生。我想知道如何从内容提供者那里获得特定的行?

例如,我将如何获得我的提供者的第一行?

这是我尝试过的,但它不起作用:

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();
4

2 回答 2

2

您只需使用光标移动方法,例如:

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

只是为了让这个答案更丰富一点,一种流行的技术用于从头开始逐个循环遍历光标的行:

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

因为该moveToNext()方法(以及其他move方法)返回一个布尔值,所以当到达最后一行时循环将退出并且不能再移动到下一行。对眼睛也有效且容易。还有一个提示:游标从 -1 索引处开始,在从零开始的查询索引结果的第一个位置之前。

于 2012-12-03T11:34:40.433 回答
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));
       }
于 2012-12-03T11:41:53.157 回答