[解決済み】Androidのカーソルを反復処理する最良の方法は何ですか?
2022-03-29 20:05:52
質問
データベースクエリの結果を反復処理し、各行に対して何かを行い、次の行に進むというコードをよく見かけます。典型的な例は次のとおりです。
Cursor cursor = db.rawQuery(...);
cursor.moveToFirst();
while (cursor.isAfterLast() == false)
{
...
cursor.moveToNext();
}
Cursor cursor = db.rawQuery(...);
for (boolean hasItem = cursor.moveToFirst();
hasItem;
hasItem = cursor.moveToNext()) {
...
}
Cursor cursor = db.rawQuery(...);
if (cursor.moveToFirst()) {
do {
...
} while (cursor.moveToNext());
}
を複数回呼び出すなど、過剰な長文になっているように見えます。
Cursor
メソッドがあります。きっともっとすっきりした方法があるのでしょう?
どのように解決するのか?
一番簡単な方法はこれです。
while (cursor.moveToNext()) {
...
}
カーソルの開始 以前 最初の結果行に移動します。 が存在する場合 . カーソルが空の場合、または最後の行が既に処理されている場合、ループはきれいに終了します。
もちろん、カーソルを使用し終わったら、カーソルを閉じることを忘れないでください。
finally
節があります。
Cursor cursor = db.rawQuery(...);
try {
while (cursor.moveToNext()) {
...
}
} finally {
cursor.close();
}
API 19以上を対象とする場合、try-with-resourcesを使用することができます。
try (Cursor cursor = db.rawQuery(...)) {
while (cursor.moveToNext()) {
...
}
}
関連
-
[解決済み】Dalvikとdalvik-cacheとは何ですか?
-
[解決済み】"ビットマップが大きすぎてテクスチャにアップロードできない"
-
[解決済み】ビットマップを保存する場所について
-
[解決済み] Androidのgravityとlayout_gravityの違いは何ですか?
-
[解決済み] Androidのソフトキーボードをプログラムで閉じる/隠すにはどうすればよいですか?
-
[解決済み] AndroidでPythonを実行する方法はありますか?
-
[解決済み] APKファイルからソースコードを取得する方法はありますか?
-
[解決済み] Androidで'Context'を取得する静的な方法?
-
[解決済み] Androidのレイアウトファイルの「tools:context」とは何ですか?
-
[解決済み] AndroidでEditTextのテキスト長を制限する最も良い方法は何ですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】com.android.ide.common.process.ProcessException: aaptの実行に失敗しました! どうすればいいですか?
-
[解決済み】シンボル 'AppCompatActivity' を解決できない。
-
[解決済み] [Solved] Unsupported method: ベースコンフィグ.getApplicationIdSuffix()
-
[解決済み】Android 8:クリアテキストのHTTPトラフィックが許可されない
-
[解決済み] サポートされていないメソッドです。BaseConfig.getApplicationIdSuffix()がサポートされていません。
-
[解決済み] TypeError: cb.apply は関数ではありません。
-
[解決済み] BIOSのセキュリティ設定でVT-xを有効にする(お使いのコンピュータのドキュメントを参照)。
-
[解決済み] Android SDK の場所には空白を含めないでください。NDK ツールで問題が発生するためです。
-
[解決済み] setBackgroundDrawable() 非推奨
-
[解決済み] APKのインストール中にDELETE_FAILED_INTERNAL_ERRORエラーが発生する。