Androidでcursorを最新のを1つだけ選択したいだけなのですがどうしても出来ません。 Bundle queryArgs = new Bundle();
Androidでcursorを最新のを1つだけ選択したいだけなのですがどうしても出来ません。 Bundle queryArgs = new Bundle(); queryArgs.putInt(ContentResolver.QUERY_ARG_LIMIT, 1); cursor = contentResolver.query( MediaStore.Images.Media.EXTERNAL_CONTENT_URI, null, null, null, MediaStore.Images.Media.DATE_MODIFIED + " desc", null ); 単純にLIMITを使うと最近のバージョンだと駄目なので1,2行目の変数を入れようとしてるのですがどこに入れてもBundleが文字型に合わないなどと拒否されてしまいます。(無理やり合わせてもダメそうな気がします) 人のサンプルだと入れてることもあるので不思議です。 descの次のnullのところがCancellationSignalというもので2つ目以降をキャンセルすればqueryArgsを使わなくても目的は果たせる?と思ったのですが使い方がさっぱりです。 最新の1つだけを表示するという目的で、それならば方法は何でも大丈夫です。 よろしくお願いします。
ベストアンサー
オーバーロードって知ってますか? メソッド名が同じでも、シグネチャが異なれば別メソッドとして定義できる仕組みです。 質問者さんの張ってるqueryメソッドは引数6個ですが、 このパターンにBundleを引数にするオーバーロードは定義されていません。なので、どこと入れ替えてもコンパイルエラーです。 使えるのは引数4つのqueryです。 このとき、第三引数にBundleを指定できます。 API仕様書 https://developer.android.com/reference/android/content/ContentProvider#query(android.net.Uri,%20java.lang.String[],%20android.os.Bundle,%20android.os.CancellationSignal)
質問者からのお礼コメント
初めて知りました。 すいません、何もかも手探り状態で調べ方からして分からないレベルです。 無事出来ました。 減らしたら確かに表記が変わってbundleが入るものが出てきたのが自分でも確認できました。 ありがとうございます。
お礼日時:6/23 4:50