問題タブ [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 - CursorAdapter の Android ViewHolder により listView が台無しになる
私はこれを理解しようとしてここ数日苦労してきました。あなたが私を助けてくれることを願っています...
次のように listadapter を設定して、プレイヤーのリストを表示するアクティビティがあります。
リスト内のアイテムをクリックすると、次のコードが実行され、プレイヤーを編集および削除するための「編集」および「削除」オプションを含むダイアログが表示されます。
選択 (プレイヤーの編集または削除) に基づいて、次のリスナーが実行されます。
アダプターのコードは次のとおりです。
さて、問題は、リストからいくつかのプレーヤーを削除した後、リストが台無しになることです。実際に利用できるものとは異なるものを示しています。
私は少し実験しましたが、bindView で PlayerViewHolder の使用をやめ、代わりにカーソルからテキストを読み取ってテキスト フィールドに直接割り当てると、うまくいきます... ???
どんな助けでも大歓迎です!
ありがとう!
- Zyb3r
android - CursorLoaderを使用してListFragmentでSQLiteデータベースをクエリするベストプラクティスは?
プロジェクトで Android 互換性ライブラリを使用しています。DevGuide ( http://developer.android.com/reference/android/app/Fragment.html ) で説明されているように ListFragment をセットアップし、単純な CursorLoader Christian を使用して、コンテンツ プロバイダーなしで使用できるようにしました ( ContentProvider を使用しない CursorLoader の使用)。
問題は、ListFragment / 親アクティビティのどこで、データベースを開き、カーソルを返し、アダプターを作成し、ListAdapter を設定する必要があるかということです。
したがって、私のアプリには、TitlesFragment、DetailsFragment、FragmentLayoutActivity、DetailsLayoutActivity があります。
ベストプラクティスですか...
以下のコードサンプル
/li>onActivityCreated
のように、ListFragment でデータベースを開き、ListFragment でデータベースを閉じます。onDestroy
以下のサンプル コードのように、データベースにクエリを実行してカーソルを返し、
/li>onCreateLoader
アダプタと setListAdapter を作成します。onLoadFinished
私は正しい軌道に乗っていますか、それともそれらのいくつかをどこかに移動する必要がありますか? 御時間ありがとうございます!
android - メインテーブルからデータをロードする CursorLoader を使用して子テーブルからデータを取得する方法は?
私のアプリはCursorLoader
メインテーブルからデータをロードするために使用しています。ListView
の助けを借りて、データが表示されますCursorAdapter
。ListView に表示されるビューには、子テーブルのデータも必要です。テーブルの関係は 1 対多です。
クエリ中に両方のテーブルを結合すると、結合されたレコードは子レコードと同じ数になるため、
ListView
では、メイン テーブルの 1 つのレコードに対して複数のアイテムが表示されます。テーブルに参加しないと
CursorLoader
、カーソル経由でデータが配信された後に子レコードを取得する最善の方法がわかりません。誰でも私を助けることができますか?
android - Android 2.2でカーソルアダプターとコンテンツプロバイダーを使用する適切な方法は何ですか?
私は混乱していて、あなたの助けが必要です。Google IO 2010 で行われた Virgil Dobjanschi の講義「Android REST クライアント アプリケーションの開発」での指示に従おうとしましたが、残念ながら、コンテンツ プロバイダーとカーソル アダプターの間の有効な通信を実装する方法が見つかりません。
私がここで抱えている問題はカーソル アダプターに関連しているため、コンテンツ プロバイダーですべて問題ないと仮定しましょう。たとえば、自分の代わりに Contacts ContentProvider を使用してみましょう。私は最も簡単な解決策を試しました-任意のContentProvider(想定どおり、SDKによって提供される連絡先)とSimpleCursorAdapterです。問題は、連絡先からのカーソルを含む SimpleCursorAdapter のコンストラクターが非推奨であることです。ドキュメンテーションは言う:
このコンストラクターは非推奨です。
このオプションは、アプリケーションの UI スレッドでカーソル クエリが実行されるため、応答が遅くなったり、アプリケーションが応答しないというエラーが発生したりする可能性があるため、お勧めできません。別の方法として、LoaderManager を CursorLoader とともに使用します。
私の考えは次のとおりです。そこで、LoaderManager のドキュメント サイトにアクセスして、使用例と見つけたものを見つけました。SimpleCursorAdapter コンストラクターを使用した完璧な例です。はい、廃止されたので避けたかったのと同じです。
私が見つけることができるすべてのチュートリアルは、この非推奨のコンストラクターを使用しています。これを避けるための適切な方法は何ですか?それとも私が気にしすぎなのかな?私が欲しかったのは、良い習慣を学ぶことだけでした...
android - ページ付きリストと CursorLoader
からLoader
取得するために使用するページ付きリストを実装する必要があります。フッターがあり、ユーザーがそれをクリックすると、次のレコードをリストに追加する必要があります。Cursor
ContentProvider
を使用して、リスト内のデータを更新するにはどうすればよいLoader
ですか? または、ここで何をすべきですか?
android - CursorAdapter の ViewBinder ライフサイクル?
SimpleCursorAdapter.ViewBinder
誰かがメソッドの観点からライフサイクルを理解するのを手伝ってもらえますか: setViewValue
、bindView
それらはいつ呼び出されますか? インスタンスは再利用されていますか? それをすべて理解するためのソースはありますか?
私は基本的に、アイテムの入力ScrollView
に使用する を持っていますが、何度も呼び出されsetViewValue
てもビューの値を更新しません。setViewValue
android - ソースデータが変更されたときにローダーがデータをロードしない
Androidのドキュメントには、ローダーが記載されています-データのソースを監視し、コンテンツが変更されたときに新しい結果を提供します。SQLiteデータベースで機能するようにCursorAdapterを変更しました。
CursorLoaderは、SimpleCursor Adapterを拡張し、コンストラクターでFLAG_REGISTER_CONTENT_OBSERVERを渡すカスタムアダプターを使用してListFragmentで機能しますが、リストで使用される応答によって基になるデータが変更されると、カーソルは変更されます。
android - android.database.sqlite.SQLiteException:near "*":構文エラー:、コンパイル中:SELECTcalls._id
電話から通話履歴の詳細を照会したいのですが、照会は次のようになります
CallLogAdapter.PROJECTIONには、呼び出しログのいくつかのフィールド(列)が含まれています。
正常に動作しますが、以下の状態では力が近くなります。
条件:-ダイヤル番号が*または#で始まり(例:* 1234567または#123457)、番号が*で終わる場合(例:1234567 *)
10-14 14:54:50.425:INFO / Database(26307):sqliteが返されました:エラーコード= 1、msg=構文エラーに近い10-1414:54:50.429:ERROR / DatabaseUtils(26307):パーセル10に例外を書き込んでいます-14 14:54:50.429:ERROR / DatabaseUtils(26307):android.database.sqlite.SQLiteException:near "*":構文エラー:、コンパイル中:SELECT _id、number、name、date、duration、new、type FROM WHERE(number = * 674088888)ORDER BY date DESC 10-14 14:54:50.429:ERROR / DatabaseUtils(26307):at android.database.sqlite.SQLiteCompiledSql.native_compile(Native Method)10-14 14:54:50.429 :ERROR / DatabaseUtils(26307):android.database.sqlite.SQLiteCompiledSql.compile(SQLiteCompiledSql.java:92)10-14 14:54:50.429:ERROR / DatabaseUtils(26307):android.database.sqlite.SQLiteCompiledSqlで。 (SQLiteCompiledSql.java:65)10-14 14:54:50.429:ERROR / DatabaseUtils(26307):android.database.sqlite.SQLiteProgram。(SQLiteProgram.java:83)10-14 14:54:50.429:ERROR / DatabaseUtils(26307):android.database.sqlite.SQLiteQuery。(SQLiteQuery .java:49)10-14 14:54:50.429:ERROR / DatabaseUtils(26307):android.database.sqlite.SQLiteDirectCursorDriver.query(SQLiteDirectCursorDriver.java:42)10-14 14:54:50.429:ERROR / DatabaseUtils (26307):android.database.sqlite.SQLiteDatabase.rawQueryWithFactory(SQLiteDatabase.java:1356)10-14 14:54:50.429:ERROR / DatabaseUtils(26307):android.database.sqlite.SQLiteQueryBuilder.query(SQLiteQueryBuilder。 java:330)10-14 14:54:50.429:ERROR / DatabaseUtils(26307):com.android.providers.contacts.CallLogProvider.query(CallLogProvider.java:129)10-14 14:54:50.429:ERROR / DatabaseUtils(26307):android.contentにあります。ContentProvider $ Transport.bulkQuery(ContentProvider.java:174)10-14 14:54:50.429:ERROR / DatabaseUtils(26307):android.content.ContentProviderNative.onTransact(ContentProviderNative.java:111)10-14 14:54: 50.429:ERROR / DatabaseUtils(26307):android.os.Binder.execTransact(Binder.java:320)10-14 14:54:50.429:ERROR / DatabaseUtils(26307):dalvik.system.NativeStart.run(Native)メソッド)10-14 14:54:50.429:DEBUG / AndroidRuntime(27470):VMをシャットダウンします10-14 14:54:50.429:WARN / dalvikvm(27470):threadid = 1:スレッドがキャッチされない例外で終了します(group = 0x40015560 )10-14 14:54:50.433:ERROR / AndroidRuntime(27470):FATAL EXCEPTION:main 10-14 14:54:50.433:ERROR / AndroidRuntime(27470):android.database.sqlite.SQLiteException:near "*":構文エラー:、コンパイル中:SELECT _id、number、name、date、duration、new、タイプFROM呼び出しWHERE(番号= * 674088888)ORDERBY日付DESC10-14 14:54:50.433:ERROR / AndroidRuntime(27470):android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:158)10-14 14: 54:50.433:ERROR / AndroidRuntime(27470):android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:114)10-14 14:54:50.433:ERROR / AndroidRuntime(27470):android.content.ContentProviderProxy.bulkQueryInternal (ContentProviderNative.java:330)10-14 14:54:50.433:ERROR / AndroidRuntime(27470):android.content.ContentProviderProxy.query(ContentProviderNative.java:366)10-14 14:54:50.433:ERROR / AndroidRuntime (27470):android.content.ContentResolver.query(ContentResolver.java:262)でdatabase.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:158)10-14 14:54:50.433:ERROR / AndroidRuntime(27470):android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:114)10-14 14:54: 50.433:ERROR / AndroidRuntime(27470):android.content.ContentProviderProxy.bulkQueryInternal(ContentProviderNative.java:330)10-14 14:54:50.433:ERROR / AndroidRuntime(27470):android.content.ContentProviderProxy.query(ContentProviderNative) .java:366)10-14 14:54:50.433:ERROR / AndroidRuntime(27470):android.content.ContentResolver.query(ContentResolver.java:262)database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:158)10-14 14:54:50.433:ERROR / AndroidRuntime(27470):android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:114)10-14 14:54: 50.433:ERROR / AndroidRuntime(27470):android.content.ContentProviderProxy.bulkQueryInternal(ContentProviderNative.java:330)10-14 14:54:50.433:ERROR / AndroidRuntime(27470):android.content.ContentProviderProxy.query(ContentProviderNative) .java:366)10-14 14:54:50.433:ERROR / AndroidRuntime(27470):android.content.ContentResolver.query(ContentResolver.java:262)ERROR / AndroidRuntime(27470):android.content.ContentProviderProxy.bulkQueryInternal(ContentProviderNative.java:330)10-14 14:54:50.433:ERROR / AndroidRuntime(27470):android.content.ContentProviderProxy.query(ContentProviderNative.java) :366)10-14 14:54:50.433:ERROR / AndroidRuntime(27470):android.content.ContentResolver.query(ContentResolver.java:262)ERROR / AndroidRuntime(27470):android.content.ContentProviderProxy.bulkQueryInternal(ContentProviderNative.java:330)10-14 14:54:50.433:ERROR / AndroidRuntime(27470):android.content.ContentProviderProxy.query(ContentProviderNative.java) :366)10-14 14:54:50.433:ERROR / AndroidRuntime(27470):android.content.ContentResolver.query(ContentResolver.java:262)
誰かが私を助けることができますか?
android - CursorAdapterbindViewメソッドのNullPointerException
CursorAdapterを拡張するクラスを作成しましたが、bindViewメソッドで問題が発生しています。
この行で常にNullPointerExceptionが発生します
TextView name_text =(TextView)v.findViewById(R.id.qr_url);
xmlの1つでqr_urlを定義したので、奇妙です。
コードで何かを見逃しましたか?それがNullPointerExceptionである理由ですか?前もって感謝します。
android - 2 つの ListView でスクロールし、代わりに LinearLayout を設定しようとしています
同じアクティビティで2つのListViewを絞り込もうとして、ピクルスに陥りました。これは、標準 (垂直) LinearLayout に含まれる 2 つの個別の ListFragments を使用して機能します。
問題は、2 つのリストを合わせると画面より長くなり、2 番目のリストが部分的に隠れてしまうことです。視覚的には、ユーザーは画面全体をドラッグして 2 番目のリストを表示することを期待しています。ただし、2 つのリストには独自の内部スクロール機能があり、画面全体を 1 つの部分としてスクロールすることはできません。
幸いなことに、リストには実際には非常に少ない項目しか含まれていません (平均でそれぞれ 5 つ)。したがって、理論的には、代わりにいくつかの LinearLayouts コンテナーを設定できます。問題は、リストによって表示されるデータが Cursor から取得され、動的であることです。CursorAdapter の newView() および bindView() メソッドは認識していますが、アダプターを ListView ではなく LinearLayout コンテナーに接続する方法がよくわかりません。つまり、CursorAdapter は、カーソルで見つかった 5 つの項目から 5 つの行項目を作成する必要があることをどのように認識しますか? カーソル項目を反復処理して LinearLayout コンテナーに項目を作成するループはどこで作成すればよいですか? Cursor のデータが変更されたときに LinearLayout のコンテンツを更新するにはどうすればよいですか? 私が見つけたすべての例は、これらの問題を ListActivity によって提供される ListView にきちんとラップしています。
よくわかりません!
マヌー
編集: breceivemail の提案に従うときの (Fragment)Activity の xml レイアウトは次のとおりです。コメント アウトされているのは、breceivemail の提案の前の元の LinearLayout コンテナーです。また、アクティビティ全体がTabHostに含まれていることにも注意してください。ただし、それが目前の問題に影響を与えるかどうかはわかりません。