問題タブ [android-arrayadapter]

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.

0 投票する
1 に答える
266 参照

android - バックグラウンド スレッドから定期的に更新され、複数のアクティビティにわたって維持される ListView の適切なアプローチは何ですか?

最初に、探しているものの背景情報とパラメーターをいくつか示します。

  • アプリケーションには、1 つのリストにアクセスする必要があるアクティビティがいくつかあります。すべてのアクティビティでこのリストを維持するために、 Applicationクラスを使用しています。
  • リストは、カスタム オブジェクトのリストです。
  • このリストの項目を表示する ListView を持つアクティビティが 1 つあります。
  • このリストにアクセスできるようにする必要がある他のアクティビティがありますが、ListView は表示されません。
  • リストはソートまたはフィルタリングできます。
  • リストはバックグラウンド スレッドからいつでも更新 (コンテンツの追加、削除、更新) でき、リストを表示すると、これらの変更がすぐに反映されます。

これまでのところ、私のアプローチは、リストへの更新の管理を含め、アプリケーションのメソッドを介してリストを管理することです。ユーザーが現在、ListView を含むアクティビティにいる場合、リストへの更新をリッスンしています。更新を受信すると、アプリケーションからリストをコピーし、ListViews カスタム ArrayAdapter に送信します。ArrayAdapter は、このリストのコピーを取得してベース リストを置き換え、現在の並べ替えとフィルターを呼び出してから、実際にリストに表示されているリストを置き換えて を呼び出しますnotifyDataSetChanged()。これはすべて、リストが UI スレッドから変更された場合、またはnotifyDataSetChanged()呼び出しなしで変更された場合にアダプタに発生する問題を回避するためです。

これはすべて問題なく機能します。問題は、このアプローチでは同じリストの複数のコピーが存在するため、他の場所でのこのリストの使いやすさが低下し、不要なメモリ使用が発生することです。また、特定の間隔で多くの更新が行われると、大量のコピーが作成される可能性があります。

だから私は、ListViewがメインリストソースを直接参照できるようにするが、UIスレッドからの更新に関する問題を回避できるアプローチを他の誰かが持っているかどうかを調べていますか?

ありがとう

0 投票する
1 に答える
4071 参照

android - Android 開発 - ArrayList の使用vs ArrayAdapter を使用した文字列の配列

私は Android 開発に不慣れで、Commonsware の「The Busy Coder's Guide to Android Development」で読んだ抜粋について質問がありました。ListActivity を拡張するクラスを構築し、コンテキスト メニューを介してリストから削除および削除する機能を示す例があります。リストの文字列のソースを使用して ArrayAdapter を設定する前に、「リストの内容をオンザフライで変更できるようにしたいので、文字列配列を ArrayList 型に変換するように」とテキストに記載されています。通常の String 配列ではなく ArrayList を使用すると簡単です"

ArrayList または String 配列を使用してリストを直接操作していた場合、この概念は理解できますが、ArrayAdapter.add/insert/remove メソッドを使用している場合、なぜそれが問題になるのでしょうか? ArrayAdapter が作成されると (そして、その .java ファイルから理解できることから)、ソース データが配列または ArrayList から取得されたかどうかにかかわらず、ソース データが List オブジェクトに変換されます。

アダプターを作成するときに通常の配列を使用してみましたが、エラーが発生しました (テキストに記載されているとおり) が、理由がわかりません。文字列配列を使用して ArrayAdapter を作成する場合と ArrayList を作成する場合の違いは何ですか?とにかく同じ List オブジェクトに変換されませんか? アダプターを介して追加/挿入/削除しようとすると、元のソース変数に何らかの結び付きがありますか?

長い質問で申し訳ありませんが、よろしくお願いします。

0 投票する
1 に答える
1482 参照

android - ArrayAdapter の最後の項目に別のビューを作成する方法は?

URL から項目のリストを取得し、カスタマイズした ArrayAdapter を使用して ListView に表示しています。最大で 25 件の結果を表示しますが、25 件を超える場合は「次へ」のリンクを表示したいので、URL から最大 26 件を取得します。ビューの最後の項目だけを表示する方法を見つけようとしています。画像の代わりに次のリンクと、他のアイテムが表示する 2 つの TextViews。下にスクロールすると、すべてのアイテムが想定どおりに表示されますが、最後のアイテムは残りのように見え続けます. 上にスクロールすると、5 つおきの項目が空白になります (区切り線があるため、まだそこにあることがわかります)。

内部 getView:

ddms では、最後のアイテムに対してのみ「最後のアイテム」タグを出力し、残りのアイテムに対して「その他のアイテム」タグを出力していますが、アイテムは if-else に基づいて変更されていません。XML では、next は gone に設定されているため、else で変更する必要はありません。if-else を削除して、else 内のコードのみを残すと、リストは適切に機能しますが、次のリンクが必要です。奇妙な動作の原因についてのアイデアはありますか? 追加のコードを表示する必要がある場合、または何が起こっているかを明確にする必要がある場合はお知らせください。

0 投票する
1 に答える
2699 参照

android - カスタム レイアウトの ListActivity が getview を呼び出さない

カスタム行レイアウトの ListActivity があります。行レイアウトは、チェックボックス、textview、および imagebutton で構成されます。

この背後には、文字列とブール値のみを含むカスタム オブジェクトの ArrayList があります。ブール値を反映するチェックボックス、スティングを反映するテキストビュー、および右側のボタンがアクションを開始します。

ArrayAdapter ページにリストされている最後のコンストラクターを使用して、これをすべてバインドしようとします。 ArrayAdapter(Context context, int resource, int textViewResourceId, List<T> objects)

何らかの理由で、textView は getView ではなくオブジェクト toString() によって設定されます。したがって、チェックボックスはブール値をまったく取得しません。何か案は?

0 投票する
1 に答える
563 参照

android - 複雑なアイテムを含む ListView、アイテムの状態を知る方法は?

私は LinearLayout を持っています:

ListView の項目として使用されます。以下のコードは、ListView の配列アダプターを作成します。

どのチェックボックスがチェックされ、どのチェックボックスがチェックされていないかを知るにはどうすればよいですか?

0 投票する
1 に答える
23234 参照

android - Android ArrayAdapter のオーバーライド

私は非常に単純なことをしたいと思っています。アプリケーションに動的にテキストを追加するリストビューがあります。しかし、ある時点で、リストビュー内のテキストの色を変更したいと思います。そこで、カスタム リスト項目を定義する XML を作成し、ArrayAdapter をサブクラス化しました。しかし、カスタム ArrayAdapter で add() メソッドを呼び出すたびに、項目がリストビューに追加されますが、テキストはそこに配置されません。

ここに私のXMLがあります: `

そして私の ArrayAdapter サブクラス:

私はひどく間違ったことをしていると確信していますが、私はまだ Android に少し慣れていません。

ありがとうございました!`

0 投票する
4 に答える
5860 参照

android - 特定のビューをクリックしたときに、リストビュー内のアイテムの位置を取得するにはどうすればよいですか?

タイトルにあるように、アイテム内のビューをクリックしたときのアイテムの正確な位置を知りたいです。

ArrayAdapterのgetView()メソッド内に次のコードがあるとします。

onClick()内で、クリックされたビューvはわかりますが、アイテムの位置はわかりません。

トリックをしましょう。getView()がビューを作成するときに、ViewHolderに位置を保存します。

このコードは機能します...しかし常にではありません。リストをスクロールしてすべてのアイテムを表示する必要がある場合は、ビューがリサイクルされます。リストに10個の要素があり、5個だけが表示されているとします(表示とは、アイテムの1ピクセルの線が表示されている場合、このアイテムが表示されていることを意味します)。ここで、下にスクロールすると6番目の要素が表示されますが、最初の(0)は引き続き表示されます。もう少しスクロールすると、最初の要素が非表示になり、7番目の要素が表示されますが、この新しい要素のビューは最初の要素(0)のビューです。
位置を保存しています:0、1、2、3、4、5。7番目の要素(6)は位置0を保存します:間違っています。

クリックコールバックを取得する別の方法は、ListViewのOnItemClickListenerリスナーを使用することです。

下にスクロールすると正確な位置がわかりますが、この方法では、クリックされた子ビューに関係なく、アイテムがクリックされたときにコールバックを受け取ります。

ありがとう。

0 投票する
2 に答える
440 参照

java - ArrayAdapter:カスタムタイプのtoString()メソッドからのテキストを表示するArrayAdapterを作成するための最良の方法は何ですか?

カスタムオブジェクトに保存されるGPS座標のArrayListを作成しようとしていました。次に、これらのGPS座標のリストを表示したいと思います。私の現在の解決策は、本質的にGPS.toString()の結果である文字列の並列ArrayListを作成することです。

これは、回避および簡素化できる可能性のある複雑な余分な作業のように思われます。厄介なほど大量の作業を必要としない、これを行うためのより良い方法を誰かが考えることができますか?カスタムArrayAdapterの作成について少し調べましたが、GPS座標オブジェクトをListViewに役立つものに変換する方法を完全に理解しているかどうかはわかりません。これがより良い解決策だと思うなら、これを適切に使用する方法について少し洞察を与えることができますか?(単なるリンクであっても)

前もって感謝します!マット

0 投票する
1 に答える
1432 参照

android - リストビューの配列アダプタがnullポインタ例外をスローする

ビューの配列にリストビューを追加しようとしています。nullポインタ例外はlv1.setAdapterでスローされます。なぜそれが起こっているのか分かりません。

これが私のコードです:



これがlist.xml内のListViewO1です

0 投票する
3 に答える
2194 参照

android - ArrayAdapter/ListView が機能しない

私はアンドロイドを使った新しいプログラミングで、最初のアプリケーションを実行すると、リストに問題が発生しました。ここにコード:

結果を見ると、リストには、クエリしているデータベースの最初の項目のみが表示されます。助けてくれませんか?

アドバイスありがとう!ジョージ。

PS: 「nombre」は列 0 です。各行の 1 列を表示したいだけなので、「getString(0)」と書いているのはそのためです。