如何从ContentProvider获取特定行?

时间:2012-12-03 11:25:23

标签: android

我对使用内容提供商有点新意。我想知道如何从内容提供商处获取特定的行?

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

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

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 个答案:

答案 0 :(得分:2)

你只需使用光标移动方法ex:

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

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

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

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

答案 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));
       }