問題タブ [android-cursoradapter]
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 - Cursor データに基づいてカスタム CursorAdapter で別の行レイアウトを使用するにはどうすればよいですか?
背景:アプリにメッセージング システムを実装しようとしています。チャット ウィンドウにCursorAdapter
メッセージを表示するカスタムを作成しています。ListView
受信メッセージと送信メッセージ (カーソル内の SQLite 行に保存される情報) に異なる行レイアウトを使用したい。各行には、同じ ID を持つ同じ要素がありますが、配置が異なります。
問題:現在、私は と をオーバーライドnewView()
していbindView()
ます。がListView
最初に読み込まれると、すべての がView
完全に作成され、各行が受信か送信かを確認し、適切な XML ファイルが展開されます。ただし、スクロールするか、新しいメッセージがウィンドウに追加されると、アダプターView
は間違った行の s をリサイクルします。をオーバーライドしますgetView()
が、パラメーターとして渡さCursor
れないため、行が着信か発信かを知る方法がありません。
私はコードを探しているのではなく、エレガントな実装の提案を探しています。前もって感謝します!
android - Android ExpandableListView SimpleCursorTreeAdapter が空で起動するとクラッシュします
私は Android アプリを作成しています (Android バージョン 2.1 以降を対象としています)。と を使用しExpandableListView
ていSimpleCursorTreeAdapter
ます。次のシーケンスに従ってクラッシュすることがわかりました。
- は
ExpandableListView
空で起動します (つまり、データベースに対応するレコードがありません)。 - レコードが追加されます。
- で画面に戻ります
ExpandableListView
。これで、グループが表示されます。 - グループをクリックして展開すると、アクティビティが強制的に閉じられます。
何日にもわたってインターネットで検索し、アプリケーションのソースと Android のプラットフォーム ソースを苦労してトレースした後
、問題は次のように思われます。)少なくとも1 つのグループが存在する場合。レコードがない (したがってグループがない) 場合、子フィールドのリストは保存されません。後でレコードが追加され、表示された子行にグループを展開すると、プライベート メンバーが null であるため、 がクラッシュします。SimpleCursorTreeAdapter
mChildFrom
ExpandableListView
mChildFrom
したがって、私の回避SimpleCursorTreeAdapter
策は、データベースに関連するレコードがある場合にのみインスタンス化することです。そうでない場合は、 の間にインスタンス化を再試行してOnResume()
ください。
誰かがクラッシュのより良い理由を持っているか、より良い解決策を持っているなら、それは私(または同じ問題を抱えている他の貧しい人々)にとって役に立ちます. (これは Android プラットフォームのバグだと思います。)
android - データベース書き込みの高速化
CursorAdapterを使用してデータを表示するListActivityがあります。このデータは、Webサービス呼び出しの結果です。
org.json。*ライブラリを使用して解析し、結果をアプリのSQLite3データベースに書き込んで、Webサービス呼び出しから応答を取得しています。次に、ListActivityのカーソルが再クエリされ、データがリストに表示されます。
私の問題は、データベースの書き込みが非常に遅いことです。私が考えることができる唯一のことは、CursorAdapterを使用せず、このデータをメモリに保持することです。私は誰かが物事をスピードアップするための別の提案を持っていることを望んでいました。おそらく、ある種のバルクインサート?
挿入を行うためにContentProviderを使用していることに注意してください。そこで、getContentResolver()。insert(...)を呼び出します。
LAN経由で56行のデータを取得して表示したテストの結果を次に示します。
応答までの時間:178ms
jsonを解析する時間:16ms
データベースに56行を書き込む時間:5714ms
最終的には、この量のデータに対してデータベースの書き込みにかかる時間を1000ミリ秒未満にしたいと思います。
android - CursorAdapterをインスタンス化できません!
assestフォルダー内の.sqliteファイルからテーブル行全体を含むを返すメソッドを持つDataBaseHelperがあります。fetchData()
Cursor
私はこれを書いた:
tryブロックの最後にこれらの2行を追加しました。CursorAdapter ca
をListView にアタッチするためにこれを行いましたlv
:
ただし、CursorAdapterのインスタンス化行に次のエラーメッセージが表示されました。
タイプCursorAdapterをインスタンス化できません
ここで何が問題になっていますか?データベースからフェッチするために間違ったアダプタを使用していますか?
android - ListView を使用したアクティビティがバック キー イベントを処理しない
タブ インターフェイスを実現するために ActivityGroup を使用します。あるタブには、ListView を持つアクティビティ A があります。アイテムをクリックすると、タブで別のページが開き (アクティビティ B)、最初のページに戻りたいときに (アクティビティ A)、時々閉じます。アプリケーション。理由がわかりません..
アクティビティ A の ListView に MyCursorAdapter (SimpleCursorAdapter のサブクラス) を使用します。
バックキーを押すたびに問題が発生するわけではありません。たまに、たまにだけ。特に、最初のページに戻る前にしばらく (ex の場合は 2 分) 待つとき。
デバッグすると、最初のページに戻らない場合、「onBackPress」または「onKeyDown」が呼び出されないことがわかります。
何か案は?ありがとう!
android - リサイクル時の位置に基づいていないListViewのレイアウトを決定する方法
CursorAdapter を拡張し、ListView に関連付けました。行には 2 つの異なるレイアウトがありgetViewTypeCount
、 、getItemViewType
、newView
およびを実装していbindView
ます。データは、各行に、このアイテムが持つべきレイアウトの種類を示すレイアウト列がある SQL テーブルから取得されます。
私getViewTypeCount
はこのように見えます:
しかし、これはビューのリサイクルを台無しにしているようです。
これはどのように達成できますか?それとも、これはこれを実装する悪い方法ですか?
android - CursorAdapterを初期化した後にListViewを更新します
タブのフラグメントを含むタブアクティビティがあります。タブの1つに、SQLiteデータベーステーブル(またはテーブルが空の場合は別のフラグメント)のデータのリストが表示されます。タブを最初に作成するとき、タブアクティビティはテーブルにデータが含まれているかどうかを確認します。含まれている場合は、リストFragmentを初期化しますが、CursorAdapterを設定しません。CursorAdapterは、SQLiteデータベースを中央データベースと同期するAsyncTaskによって初期化され、次にCursorsとCursorAdaptersを作成します。リストFragmentは、AsyncTaskがCursorAdapterを作成するのを待っている間、ProgressDialogを表示します。CurserAdapterが初期化されると、ProgressDialogは閉じられますが、notifyDataSetChanged()が呼び出されても、ListViewは「空のリスト」ビューのままになります。タブを切り替えて戻ってきたら、ListViewはデータを正しく表示します。CursorAdapterが初期化されたら、どうすればListViewを更新できますか?
コードの関連ビット:
タブ:
SyncTask:
友達リスト:
android - カーソルアダプタを使用して、アイテムがsqliteでバックアップされているリストを表示する方法はありますか
ListViewにマップしたいアイテムのリストがありますが、それらのアイテムの個々のフィールドはsqliteによってサポートされている場合とされていない場合があります。アイテムがsqliteによってサポートされていない場合は、いくつかのデフォルト値とIDを表示したいと思います。SimpleCursorAdapterを使用してこれを行う方法はありますか、それとも他の場所を探す必要がありますか?
android - onListItemClick() は、カスタム アダプターを使用した ListView ではバイパスされます
この問題に関して多くの質問があることは承知していますが、row.xml のすべてのビューを focusable="false" および focusableInTouchMode="false" に設定する解決策は機能せず、ListActivity から ListView を取得して設定することもできません。 setItemsCanFocus(false)。
奇妙なことに、コンテキスト メニューに登録すると、ロング タップが機能します。しかし、通常のタップ?いいえ。OnItemClickListener のようなリスナーを無駄に設定しようとしました。
アダプターで getView() をオーバーライドすることでこれを修正できる可能性があることをどこかで読みましたか? それがどのように機能するかはよくわかりません。ユーザーがどのビューをクリックしたかは知りたくありません。onListItemClick() で対応するコードを開始するためにクリックされたリストの行だけが気になります。
私のrow.xmlに何か問題があるのではないでしょうか? それとも、ListView のアダプター (情報を更新するために onCreate() ではなく onResume() に配置) を設定する方法の影響を受けますか?
android - CursorAdapterで使用するORMLiteを搭載したAndroidカーソル
ORMLite Daoオブジェクトで処理しているクエリのカーソルを取得する方法はありますか?