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

この答えをもう少しわかりやすくするために、カーソルの行を最初から1つずつループするために使用される一般的な手法は次のとおりです。

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

moveToNext()メソッド(および他のメソッド)はブール値を返すためmove、最後の行に到達するとループが終了し、次の行に移動できなくなります。目にも効果的で簡単です。もう1つのヒント:ゼロベースのクエリインデックスの最初の位置が結果になる前に、カーソルは-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 に答える