問題タブ [android-cursor]
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 - AlphabetIndexer setCursor がキャッシュを更新しない
AlphabetIndexer を使用して高速スクローラーを実装しようとしていますが、カーソルが変更されると、インデックス キャッシュが更新されません。私の CursorAdapter コンストラクターでは、呼び出しますsetCursor(cursor)
が、何も変更されず、ドキュメントによると:
カーソルが変更された場合、アダプタは setCursor(Cursor) を呼び出してカーソルを更新する責任があります。getPositionForSection(int) メソッドは、指定されたセクション (アルファベット) の開始インデックスのバイナリ検索を実行します。
しかし、何も起こっていません。これを検索フィルターに使用しているので、連絡先を検索すると、リストが連絡先で更新されるため、AlphabetIndexer はリスト内の新しいアイテムのインデックスを更新するために機能するはずです。
例: 私のリスト全体は、「A」で始まる連絡先で始まり、「E」で始まる連絡先で終わります。したがって、AlphabetIndexer はこのインデックスをキャッシュに保持します。
しかし、'C' で始まる連絡先を検索してみましょう。'C' で始まる連絡先が 250 件あるとします。したがって、この連絡先をすばやくスクロールする必要があり、'C' インデックスが表示される必要がありますが、'C' だけではなく、リスト全体を取得したときに表示されたすべてのインデックスが表示されます。
入力する文字ごとに setCursor(cursor) を呼び出す CursorAdapter コンストラクターを次に示します。
android - Android SQLit 検索: NullPointerException?
SQLite DB に対して検索操作を実行する必要があります。
私のアクティビティにはEditText
、キーワードと検索を入力するためのものがありますButton
。ユーザーがボタンをクリックすると、EditText テキストが に保存され、DBHelper クラスkeyword
のメソッドに送信されます。search(String keyword)
SearchActivity
forと に次のコードがonCreate()
ありonClick()
ます。
しかし、私はNullPointerException
LogCatに入りました!! エラーがどこにあるのかわかりませんでした。
誰でも助けることができますか?
android - Spinner の SimpleCursorAdapter または Cursor に追加の要素を挿入する方法は?
データベースから取得したデータのリストを表示するスピナーがあります。データはクエリからカーソルに返され、カーソルはスピナーの SimpleCursorAdapter に渡されます。このように問題なく動作していますが、このデータの上に別のアイテムを挿入したいです。たとえば、スピナーは既に DB に保存されているユーザー作成のテンプレートのリストを表示していますが、テンプレートのリストの上に「新しいテンプレート」と「空のテンプレート」を挿入したいので、Cursor/SimpleCursorAdapter に挿入する必要があります。何とかして。
配列リストを使用してカーソルから配列リストにデータを入力することを検討しましたが、カーソルには他の関連するデータ行も含まれているため、より良い解決策です。インターネットで他の解決策を検索したところ、この目的で CursorWrapper を使用するよう求める回答がいくつか見つかりましたが、CursorWrapper を使用して目的を達成する具体的な例は見つかりませんでした。カーソルにいくつかの行を挿入するにはどうすればよいですか、または誰かがCursorWrapperのわかりやすい例を教えてください!! 前もって感謝します。
android - Android: 最上位以外の Fragment で CursorLoader がクラッシュする
CursorLoader を使用してコンテンツを取得する ListFragments がいくつかあります。ユーザーがコンテンツをドリルダウンすると、ある Fragment が別の Fragment に置き換わります (Activity は同じままです)。ただし、最上位以外の Fragment でコンテンツが変更されると、アプリはクラッシュします。
これは、バックグラウンド更新によってコンテンツが変更された場合、またはユーザーがホーム画面から戻ったときに別の Fragment がバック スタックの一番上にある場合に発生する可能性があります。ハンドラーは、onLoadFinished
もはや存在しない UI を更新しようとします。しかし、フラグメントがまだカーソルの更新を取得しているのはなぜですか?
フラグメントが表示されない場合は更新を中止することで回避しましたが、これは間違っているようです。
これが私のフラグメントの外観です。簡潔にするために少し編集されています。
チェックはクラッシュを防ぎますisVisible()
が、私が見たどのサンプル コードにもありません。ここで何が問題なのですか?
編集:案の定、閉じたカーソルを使用しようとしている古いビューで StaleDataException が発生しました。そのため、ビューが破棄されたときに LoaderManager を破棄しています。これが正しいことかどうかはまだわかりません。StaleDataException を再現できません。
isVisible()
上記のハックを削除し、これを追加しました:
android - Android 3.0はカーソルウィンドウから行番号、列番号を読み取ることができませんでした
android 2.1で正常に動作するアプリケーションがありますが、3.0に移行しようとすると、慣れていないカーソルエラーが発生します。
Java.lang.IllegalStateException :カーソルウィンドウから行0、列-1を読み取ることができませんでした。カーソルからデータにアクセスする前に、カーソルが正しく初期化されていることを確認してください。
すべてのデータはSQLiteデータベースに保存され、このコードはandroid2.1で正常に機能します。Android 3.0ではカーソルを別の方法で初期化する必要がありますか?
以下にリストされているのは私のコードです。
android - 文字列から改行を削除する
これが私の問題です。データベースがあり、テレビ番組のエピソードでいっぱいです。1 つの列はエピソード番号を示します。次のようにエピソードをリストに表示したい:
- エピソード1
- エピソード 2
- エピソード 3
- 等
これを行うためにSimpleCursorAdapterを拡張する独自のアダプタークラスを使用しています...フォーマットエラーがあったため、使用していAndroid.R.layout.simple_list_item_1
ますAndroid.R.id.text1
基本的に、カスタム アダプターを使用する唯一の理由は、次のようなことができるようにするためです。
問題は、次のようなリストを取得することです。
- エピソード
- 1
- エピソード
- 2
- エピソード
- 3
このようなことを試すと(コードの別の部分で機能しました):
まったく同じリスト出力が得られます:(
2 つのテキスト ボックスが隣り合ったカスタム ビューを作成しないのはなぜですか? それをきれいに見せるのは難しいです:/
android - sqliteデータベースからAndroidカーソルに1MBを超えるデータをロードする方法は?
正確に私はsqliteデータベースからandroidカーソルに1MB以上のデータをロードしようとしています。ロード時に次のようなエラーが発生します
大きなデータ(1MB以上)をAndroidカーソルにロードする方法を知っている人はいますか?ありがとう、
android - Androidの一般的な列データでリストアイテムを分離しますか?
私はAndroidに少し慣れていませんが、私が知る限り、データベースをカスタム行を使用してリストビューにバインドする場合は、CursorAdapterをオーバーライドする必要があります。ただし、リストビューに実装したい機能があるため、作業を開始できません。日付の昇順でリストビューを表示するだけでなく、2つの別々のセクションを作成したいのです。私のリストビューでは、両方とも日付に従ってソートされていますが、同じカーソルを使用しています(それが可能な場合でも)。
私のスキーマの簡略化されたバージョンは次のようになります:_ID、NAME、DATE、TRUTH_VALUE
私のデフォルトのビューでは、結果のカーソルの行を日付で並べ替えますが、「TRUTH_VALUE」に従って区切られたカーソルからセクションを「フィルタリング」または作成することもできます。つまり、リストのセクション1にアイテムを含めることができます。 「TRUTH_VALUE」の任意の値が0で、日付に従ってソートされ、セクション2には、TRUTH_VALUE列が任意の1であり、日付に従ってソートされている項目が含まれています。
2つのカーソルを受け入れることができる(フィルター処理された単一のListViewにされる)アダプターなどを見つけることができないようです。また、カスタムアダプターのコンストラクターに追加のパラメーターを配置することも検討していません(インスタンス化など)。私のアダプターは、パラメーターに値を含めます。これは、アダプターがカーソルのデータをバインドする方法を変更できるかどうかを判断するのに役立ちます。これは不可能だと思いますが、パフォーマンスの問題につながることは言うまでもありません。
前もって感謝します!
android - 再クエリが廃止された場合、カーソルを再クエリする方法は?
タイトルのとおり、以前は を呼び出しcursor.requery()
ていましたが、現在は非推奨です。今、この関数をどのように呼び出しますか?
このメソッドは非推奨です。これを使用しないでください。新しいカーソルをリクエストするだけで、これを非同期で実行でき、新しいカーソルが戻ってきたらリスト ビューを更新できます。
では、どのようにして新しいカーソルを要求し、それをアダプターに戻すのでしょうか?
android - LoaderManagerは何をしますか?
私は何をするのか理解しようとしていLoaderManager
ます。誰かがそれと例を共有できますか?カーソルを作成するときにそれらを使用する必要がありますか?そうでない場合は、どのように使用すればよいですか?簡単な例をいただければ幸いです。