問題タブ [android-loadermanager]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
android - 複数のローダーを持つ LoaderManager: 正しいカーソルローダーを取得する方法
複数のローダーがある場合に正しいカーソルを取得する方法は明確ではありません。次のように 2 つの異なるローダーを定義するとします。
次にonCreateLoader()で、ID に応じてさまざまなことを行います。
ここまでは順調ですね。ただし、正しい Cursoradapter の正しい Cursor を識別するための ID を取得できないため、 onLoadFinished()で正しいカーソルを取得する方法。
または私は間違っていますか?これは、1 つのフラグメントで 2 つの異なるカーソルアダプターの結果を取得する間違った方法です。
android - ListAdapter または SimpleCursorAdapter からリストビューに入力します
私は、基本的に私たちのウェブサイトで利用可能なデータをミラーリングする新しい Android アプリを作成しています。GUI にはListView
、各項目に画像とテキストを含む 、またはRelativeLayout
1 つの項目の詳細を表示する が表示されます。
このアプリの応答性を高めるために、データが十分に新しい場合は内部 DB からデータを読み取り、内部データが古すぎる場合はサーバーの API (JSON over http) からデータを読み取ります (そして、新しいデータを含む内部 DB)。
基本的なチュートリアルから、内部 DB から読み取る場合は DB とSimpleCursorAdapter
(*) を使用する必要があるようです。ArrayList
しかし、ウェブから読むときは、 andを使用していると思いますArrayAdapter
。
両方の状況を処理できるアダプターのタイプはありますか?
(*) CursorLoader で LoaderManager を使用することが最新の方法であることはわかっていますが、Android 2.1 をサポートしようとしています。SimpleCursorAdapter を AsyncTask に入れて ANR を回避できると思います。
android - どのCursorAdapterを使用する必要がありますか?
CursorAdapterには3つのコンストラクターがあります。ガイドとリファレンスを見てみましょう。
1)CursorAdapter(コンテキストコンテキスト、カーソルc)
このコンストラクタは非推奨です。このオプションは、アプリケーションのUIスレッドでカーソルクエリが実行される結果となり、応答性が低下したり、アプリケーションが応答しないエラーが発生したりする可能性があるため、お勧めしません。別の方法として、CursorLoaderでLoaderManagerを使用します。
2)CursorAdapter(コンテキストコンテキスト、カーソルc、ブール値のautoRequery)
自動再クエリの制御を可能にするコンストラクター。これを使用せず、代わりにCursorAdapter(Context、Cursor、int)を使用することをお勧めします。
3)CursorAdapter(コンテキストコンテキスト、カーソルc、intフラグ)
推奨されるコンストラクター。
フラグ アダプタの動作を決定するために使用されるフラグ。FLAG_AUTO_REQUERYとFLAG_REGISTER_CONTENT_OBSERVERの任意の組み合わせにすることができます。
FLAG_AUTO_REQUERY この定数は非推奨です。このオプションは、アプリケーションのUIスレッドでカーソルクエリが実行される結果となり、応答性が低下したり、アプリケーションが応答しないエラーが発生したりする可能性があるため、お勧めしません。別の方法として、CursorLoaderでLoaderManagerを使用します。
FLAG_REGISTER_CONTENT_OBSERVER。CursorLoaderでCursorAdapterを使用する場合、このフラグは必要ありません。
CursorAdapter(Context context、Cursor c、int flags)が推奨されるコンストラクターですが、カーソルローダーでCursorAdapterを使用する場合、可能なフラグは2であり、1つは非推奨であり、もう1つは必要ありません。CursorLoaderでCursorAdapterを使用する場合、このコンストラクターを使用して、フラグとしてゼロを渡す必要がありますか?そしてこの場合、コンストラクターは#1と同じ非推奨ですか?
android - チャットアプリケーションのチャットをロードするAndroid db
チャット アプリケーションを作成していて、少しガイダンスが必要です。入ってくるチャットを保存するためにsqliteデータベースを使用しています。アクティビティが開いているときに、その特定のチャットからチャット履歴をロードし、新しいチャットが入力されると更新を続けるようにします(私の主な質問は、どのように行うかです私はこれをやっています)。
その会話のチャットを含むクエリの初期カーソルで CursorAdapter を使用し、ListView のアダプターとして設定する必要がありますか? これを試しましたが、データベースに挿入してもデータが更新されません。
コードを提供していないことは承知していますが、これを行う最善の方法についての一般的な会話は大歓迎です。ありがとう!
Android 2.3.3(API 10)以降(CursorLoaderと、API 11までは利用できないものすべてについて少し読んだ)で動作するためにこれが必要であることにも言及させてください。私ができるもう1つのことは、ArrayAdapterを使用してチャットを直接追加し(アクティビティが開いている場合)、そうでない場合はデータベースに挿入し、onResume()でArrayAdapterをクリアしてすべての会話を照会することです一度、それぞれを読んでください。これが最適な方法でしょうか?
android - LoaderManager のスコープは何ですか?
ローダーを使用して Android アプリケーションを作成する場合、すべてのアクティビティとフラグメントに独自のLoaderManager
. それともLoaderManager
、アプリケーションが所有するものは 1 つだけにする必要がありますか? 最後に、特定の s を識別するために使用される「一意の ID」LoaderManager
は、クラスの外部に表示されますか?
具体的には、アプリケーション内のどのクラスがLoaderCallback<Cursor>
メソッドを実装する必要があるかを判断するのに苦労しています (つまり、各フラグメントでこれらのコールバックを実装する必要があるか、または 1 つのフラグメントでコールバックを実装して結果をクエリし、必要に応じて他のフラグメント/アクティビティに送信する必要があります)。 ?
私を助けてくれる人に前もって感謝します!これについては、オンラインであまり多くの情報を見つけることができませんでした。
android - Service から LoaderManager を使用できますか?
アクティビティとフラグメントからうまく機能するカスタム ローダーとカーソルを使用してデータ ロード システムをセットアップしましたが、Service に LoaderManager (私が見つけたもの) がありません。LoaderManager が Service から除外された理由を知っている人はいますか? そうでない場合、これを回避する方法はありますか?
android - CursorLoaderを使用して、個々のデータベースレコードを1つずつ表示するにはどうすればよいですか。
ContentProvider
質問と対応する回答を含む各レコードでを作成しようとしています。そして、各質問と回答のTextViewを表示するアクティビティと、それらのTextViewの下にある[次へ]ボタン。[次へ]ボタンをクリックすると、次の質問と回答が表示されます。
onStop()
CursorLoaderはデータをとに保持するため、CursorLoaderとLoaderManagerを使用しようとしています。またonStart()
、とについて学習しようとしていCursorLoaders
ますLoaderManagers
。
私が見つけた例はすべて使用setListAdapter()
していますが、私のアクティビティをリストのように見せたくありません。SimpleCursorAdapter
を使用bindView()
してmain.xml
レイアウトを使用することで、これを回避しようとしました。それがうまくいくかどうかはわかりません。
プレーンカーソルがある場合はを使用しますmoveToNext()
が、その場合は新しいクエリを使用する必要があるLoaderManager
ようです。restartLoader()
新しいクエリを作成するには、カーソルを使って次のレコードに移動するよりも時間がかかると思います。特に、現在または次のレコードの位置を知る必要があるためです。
だから私の質問は:次のレコードのために新しいクエリを作成することなく、CursorLoader
とを使用LoaderManager
してデータベースを調べ、レコードごとに記録することはできますか?それともCursorLoaders
、LoaderManagers
本当にListViews専用ですか?
これまでの私のコードは次のとおりです。それほど多くはないことに気付きましたが、ローダーとロードマネージャーでAndroidのページを読んだり読み直したりしました。
android - アクティビティまたはフラグメントには、実行されるデータベース操作のタイプごとに個別のローダーが必要ですか?
フラグメントまたはアクティビティがsqliteデータベースと対話するためのGoogle推奨の方法(Androidサポートライブラリを使用)は、AsyncTaskLoaderを拡張するローダーを介して行われ、CursorLoaderがContentProviderに対して行う方法と同様に機能するようです。
単一のアクティビティまたはフラグメントは、1つ以上のテーブルのデータを更新、削除、およびクエリするなど、さまざまな方法でデータベースと対話できます。しかし、ローダーにはデータベース操作を実行する場所が1つしかないため(つまり、でloadInBackground()
)、開発者は、対話のタイプごとに個別のローダーを作成する必要があります。特に、での動作をパラメーター化する唯一の方法loadInBackground()
は、? へのargs
引数を介したローダーのコンストラクターへの引数LoaderManager.initLoader()
どうもありがとう。
java - Android アプリケーションのすべてのアクティビティで SQLiteOpenHelper の 1 つのインスタンスを共有しても問題ありませんか?
サブクラス化されたアプリケーションのメンバーとして SQLiteOpenHelper の単一のインスタンスを持ち、SQLiteDatabase のインスタンスを必要とするすべてのアクティビティが 1 つのヘルパーからそれを取得することは問題ないでしょうか?
java - managedQuery から LoaderManager/CursorLoader に移行するにはどうすればよいですか?
API レベル 8 (2.2、Froyo) を対象とする Android アプリケーションを開発しています。私は a を使用してContentProvider
おり、それは十分に単純でありSimpleCursorAdapter
、リスト ビューに入力するために使用していますが、SimpleCursorAdapterのドキュメントで、フラグのないコンストラクターが次の注記で非推奨になっていることに気付きました。
このコンストラクターは非推奨です。このオプションは、アプリケーションの UI スレッドでカーソル クエリが実行され、応答性が低下したり、アプリケーションが応答しないというエラーが発生したりする可能性があるため、推奨されません。別の方法として、LoaderManager を CursorLoader とともに使用します。
API レベル 8 をターゲットにしているため、 aLoaderManager
は に関連付けられていませんActivity
。互換性パッケージのFragmentActivity
クラスはこれを行いますが、フラグメントは使用していません。
私の質問はLoaderManager/CursorLoader
、11 より前の API レベルを対象とするアプリでどのように使用すればよいですか? SimpleCursorAdapter
Fragments に強制的に移行する必要がありますか、それとも非推奨のコンストラクターに戻す必要がありますか (ただしAsyncTask
、UI スレッドに適した状態に保つために を使用します。これは、CursorLoader
が行うべきことです)。