問題タブ [android-adapter]
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 - ギャラリーのアダプターを切り替えるにはどうすればよいですか
ギャラリーのアダプターを動的に切り替えることはできますか?
onCreate()
私の活動の中で、私はこれをしました:
そして後で私のコードで、私はしました
試しましたが、エミュレータでは、「setAdapter」を再度実行してもmyGalleryが更新されません。どうすればmyGalleryがadapter1を使用していたときにすべてのアイテムを解放し、anotherAdapter1のアイテムを再作成するように強制できますか?
ありがとうございました。
android - Android でのアダプターの役割は何ですか?
Android のコンテキストで、いつ、どこで、どのようにアダプターが使用されるかを知りたいです。
Android の開発者向けドキュメントの情報は私にとって不十分であり、より詳細な分析が必要です。
android - listView に値が入力されないのはなぜですか?
私は非常に単純なことをしようとしています(データが入力されたlistViewを表示しています)が、できません。私のコードが機能しておらず、何が問題なのかがわかりません。他の誰かが私を助けてくれることを願っています:)
listView が定義されている私の XML:
アクティビティ:
アプリを起動すると、問題なく、XML の TextView が表示されますが、ListView の兆候はありません...何か不足していますか?
android - カスタム アダプタで LayoutInflater を使用できません
リストビューに 1 行あたり 3 つのテキストビューを設定するカスタム アダプターの作成を検討しています。これを行うためのコード例をかなり見つけましたが、最も良いと思われるコードはhttp://www.anddev.org/custom_widget_adapters-t1796.htmlにありました。
最新の Android SDK でいくつかのコンパイラの問題を修正するためにいくつかのマイナーな調整を行った後、例外を取得するためだけに実行しました。
エラー/AndroidRuntime(281): java.lang.UnsupportedOperationException: addView(View, LayoutParams) は AdapterView でサポートされていません
そのため、私は多くの調査を行い、これについて考えられる多くの理由と修正を見つけました。どれも物事を変えませんでした。私のアダプターコードは現在:
そのため、インフレータを取得するコメントアウトされた方法と、現在コメントアウトされていない方法を試しました。null だけでなく "parent" を inflate に渡し、"true"、"false" を渡し、最後のパラメーターを完全に省略しようとしました。それらのどれも機能していません。これまでに見つけたすべての例は 2008 年のもので、少し時代遅れだと感じています。
誰かがこれを手伝ってくれるなら、私は問題を解決したいと思っています.
android - 動的アダプタ ラッパー Android での notifyDataSetChanged/ListView の問題を修正する方法
概要:カスタム アダプター ラッパーを介して ListView に見出し行を動的に追加しようとしています。ListView で、スクロール位置の同期を維持するのに問題があります。実行可能なデモ プロジェクトが提供されます。
CursorAdapter の値に基づいてリストにアイテムを動的に追加したいと思います。ユーザーが現在表示している位置よりも数個先です。これを行うために、CursorAdapter をラップし、新しいコンテンツのインデックスを SparseArray に保持するアダプターがあります。項目がカスタム アダプターに追加されたときに ListView を更新する必要がありますが、それを機能させようとして多くの落とし穴に遭遇したので、アドバイスをいただければ幸いです。
デモ プロジェクトは、 DynamicSectionedList.zipからダウンロードできます。
デモでは、10 か所先を見て、リスト項目が次の文字に切り替わる正しい位置を見つけることによって、見出しが動的に追加されます。notifyDataSetChanged の各実装には、次のような問題があります。
デモ 1
このデモは、notifyDataSetChanged() の重要性を示しています。何かをクリックすると、アプリがクラッシュします。これは ListView... での健全性チェックによるものですmItemCount != adapter.getItemCount()
。道徳的には、データが変更されたことをリストに通知する必要があります。
デモ 2
自然な次のステップは、変更が発生したときに ListView に変更を通知することです。残念ながら、ListView がしっかりとスクロールしているときにこれを行うと、アプリがタッチ モードから切り替わるまで、すべてのタッチ操作が中断されます。これに気付くには、新しい見出しを生成するのに十分な距離まで「フリング スクロール」する必要があります。画面をタップしてもスクロールは停止せず、停止するとリスト項目はクリックできなくなります。これはif (!mDataChanged) { /* do very important stuff */ }
、AbsListView.onTouchEvent() の一部のコードが原因です。
デモ 3 これを修正するために、デモ 3 では pendingChanges フラグが導入され、カスタム アダプタは、変更に対して「安全な」状態になったときに ListView から呼び出すことができる notifyDataSetChangedIfNeeded() を取得します。変更を通知する必要がある最初のポイントは ListView.layoutChildren() にあるため、このメソッドをオーバーライドして、必要に応じて最初に変更を通知し、次に呼び出すようにしました。少なくとも 1 つの見出しを通り過ぎてから、リスト項目をクリックします。
理由は完全にはわかりませんが、これは正しく機能しません。キーボード/トラックボールで項目をタップまたは選択すると、古い位置が適切に同期されずにリストが更新されます。受け入れられないリストの一番上までスクロールします。
デモ 4 デモ 3 のスクロールの問題は、少なくともタッチ モードでは克服できます。タッチダウン時に notifyDataSetChangedIfNeeded() への呼び出しを追加することで、すべてのタッチ操作が期待どおりに機能し、リストの位置が適切に同期されるようなときに、データの変更が発生します。
ただし、デバイスがタッチモードでない場合、そのアナログを見つけることができません。もちろん、ハックのように見えることは言うまでもありません。ほとんどの場合、リストは一番上にスクロールして戻りますが、時折正しい位置を維持する原因がわかりません。
Android はあらゆる段階で私と戦っているので、より良いアプローチが必要だと感じています。修正を適用して動作させることができる場合は、デモをお試しください。
これを調べることができる人に感謝します。コードを機能させることができれば、見出し付きのリストに対して同じ最適化を達成しようとしている他の人にとって役立つことを願っています。
android - ListAdapter を使用して ListView のデータを印刷する方法
更新しました
データベースから取得したデータをリスト ビューに印刷しようとしています。しばらくの間、私のアプリケーションは、データベース内の各データ、リスト ビューの行を出力します。したがって、データベースに 10 個のデータがある場合、アプリはデータベースの各行に対応する 10 行を出力します。印刷している様子がこちら。
現在の外観の新しい画像:
しかし、それは私が望むようにデータを印刷していません。特定のテキスト ビューで行の列を印刷したいのですが、何も表示されません。
したがって、アクティビティ RatedCalss はメソッドselectTopCalls()
を呼び出し、このメソッドが返すリストを List が受け取るようにします。そして、このリストを listAdapter に渡します。
RatedCalls.javaという名前のこのアクティビティがあります。
このクラス、 MyListAdapter.java という名前の ListAdapter クラスがあります。
データベースからデータを取得するメソッドは、SQLite 関数を処理する別のクラスにあります。これは方法です:
list_item.xmlという名前のビューの xml ファイルは次のとおりです。
したがって、アクティビティのテキスト ビューにデータを出力したいのですが、MyListAdapter クラスの場合、またはアクティビティの場合、テキストをどこに設定するか、どのクラスに設定するかわかりません。
ありがとう。
android - ListView ArrayAdapter、行内に子を隠していますか?
この質問に対する答えが見つからないので、少しばかげているように感じます。実際に間違った質問をしていると思います。しかし、ここに行く...
リスト ビューと xml で定義された listviewitem があり、いくつかのフィールドがあり、特別なことは何もありません。すべて見えるように設定されています。
次に、カスタム ArrayAdapter を使用して ListView にバインドし、行 5 でテキスト ビューの 1 つを非表示にしたいと考えています。ただし、項目 0 と項目 5 で TextView を非表示にしているようです。問題を再現するためにコードを簡略化しました。誰かが私を助けてくれることを願っています...
私のアダプター
私の拘束コード
前もって感謝します!
android - Android - simpleCursorAdapter の更新
ListActivity
データベースクエリからデータを取得する があります。また、単純なカーソル アダプターを拡張するカスタム アダプターもあります。
カスタマイズされたコンテンツを表示するためにnewView
、 bindView メソッドをオーバーライドしました。
ビューの各要素には次のものがあります。
TextView
タイトルを含むImageView
星の数を含む - 表示される画像は、データベースから取得した値に基づいて変更されます- ボタン - ボタンのテキストはクリック (お気に入り/お気に入りにする) で変化し、データベース更新イベントをトリガーします。
私の問題はこれです-スクロールするListView
と、行った変更が消えたように見えます..たとえば、最初のアイテムがお気に入りとしてマークされ、リストがスクロールされます...最初のアイテムに戻ると、テキストが元に戻ります内部的にデータベースが更新されていますが、以前の値に戻ります。
notifyDatasetChanged()
データベースの変更をアダプターに通知する必要があるため、このケースには適していないことを読みました。メソッドを使用しようとしていますreQuery()
が、どこに配置すればよいかわかりません。
ボタンreQuery()
のメソッドに配置する必要がありますか? onClick
そうでない場合、どこに配置する必要がありますか?
android - Android:ListViewの内容を更新するには?
のListView
拡張機能を使用してBaseAdapter
います。適切に更新できません。更新すると、スクロール イベントが発生するまで、古いデータが新しいデータの上に描画されているように見えます。古い行は新しい行の上に描画されますが、スクロールを開始すると古い行は消えます。
invalidateViews()
、notifyDataSetChanged()
、およびを呼び出してみnotifyDataSetInvalidated()
ました。私のコードは次のようになります。
android - TableLayoutをArrayAdapterにバインドすることは可能ですか?
TableLayoutをArrayAdapterにバインドすることは可能ですか?