問題タブ [baseadapter]
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 - 単一のオブジェクトで BaseAdapter.notifyDataSetChanged() を呼び出す方法はありますか?
アダプターの単一の要素でBaseAdapter.notifyDataSetChanged()を呼び出す方法はありますか。
私がやろうとしているのは、データを更新し、それらの変更を含む ListView に反映することです。問題は、変更が非常に小さいため、更新されたビュー内の 1 つの項目ではなく、ビュー全体を更新する必要があるのがばかげているように見える場合があることです。
android - ScrollView の柔軟性を備えた Listview の効率性
特定のデータ キャプチャ アプリケーションの特定の UI に最適なアプローチを見つけようとしています。ここでは、垂直スクロール ビューの上部に多数のフォーム ウィジェット (EditText と Spinner) があり、次に多数のチェックされたエントリ (10 個) があります。 -200)、最後に多数の追加ウィジェットがあります。
ListView の効率 (ビューのリサイクルと、チェックされたエントリのカスタム アダプターのオプション) を利用する最善の方法を考えようとしていますが、リストの前後に他のウィジェットを含める柔軟性があります。
十分に文書化された理由により、ListView を Scrollview 内に配置するという考えを排除しました。
複数のビューに分割して ViewFlipper を使用することも検討しましたが、これはユーザー エクスペリエンスに適していません。
私が遭遇した唯一の他のアイデアは、リストビュー以外のアイテムをリストビューのヘッダーとフッターとして配置することです。このようにして、リストビューでチェックされたエントリにカスタム アダプターを引き続き使用でき、残りのウィジェットは必要な場所にあります。
これは最も効率的で賢明なアプローチのように思えますか? コメントやアドバイスをいただければ幸いです。
android - ListView / BaseAdapterに、Androidの最初に必要なすべてのビューを膨らませるように強制します
私はリストビューの子供たちに膨らませるかなり高価なレイアウトを持っています。リストビューに5人の子供が表示されている場合、eatch時間getView()は、私の高価なレイアウトのうち5つ(おそらく1〜2つ)しか膨らませません。そしてそれを再利用します。このプロセスには時間がかかる場合がありますが、問題ありません(同時に、インターネットからデータをダウンロードするので、UXを損なうことはありません)。
問題は、スクロールすると、スクロールの開始convertView is null時にリストビューをもう一度膨らませる必要があることです。これは、私が初めてスクロールしたときにのみ発生します。それを回避する方法はありますか?子またはリストビューのサイズを変更しないことに注意してください。スクロールラグを回避するために、最初にその余分なビューを膨らませる方法はありますか?
更新また具体的に:
私のリストビューには3.5行が表示されます..意味4.アダプターが膨らむ5.アダプターが別のアダプターを膨らませるにはどうすればよいですか?多分それに対するよりエレガントな解決策があります
android - Android で GridLayout のコンテキスト メニューを表示する方法
そこで、次のような BaseAdaper を拡張するクラスを作成しました。
}
私のアクティビティでは、GridLayout があり、そのアダプターを ProfileTileAdapter のインスタンスに設定します。私のアクティビティでは、ユーザーがビューの 1 つ (この場合は ProfileTile) を長押ししたときにコンテキスト メニューを開きたいのですが、方法がわかりません。また、ユーザーがコンテキスト メニューのオプションを選択したときに、どの ProfileTile が長押しされたかを調べる必要があります。そこにあるすべてのチュートリアルは、アクティビティの静的ビューでそれを実行し続けますが、これは好きではありません。
android - すべてのアイテムを更新せずに baseadapter を使用してグリッドビューからアイテムを削除する方法
背景: baseadapter を使用して、グリッドビューをイメージビューで埋めています。Imageview のリソースは、AsyncTask を使用してダウンロードされます。onPostExecuteメソッドからsuccessまたはfailureとしてコールバックを取得します。そして、このコールバックをアダプターのgetViewメソッドで使用します。
問題 imageview の URL が 404 エラーを返した場合、404 エラーが原因で gridview にいくつかの空のスペースがあります。これらのアイテムを削除して notifydatasetchanged を呼び出すことはできますが、今回はすべてのグリッドビューを最初から更新します。エラーが発生したアイテムをどこかに保持し、それらを削除して、notifydatasetchanged を 1 回呼び出しますが、アプリケーションで gridview が 2 回塗りつぶされているようです。
質問 gridview に隙間なく画像を読み込みたいです。たとえば、9 つの画像があり、4 番目と 6 番目の画像が 404 エラーを返す場合、グリッドビューで 7 つの項目のみを表示したい
私の質問が明確であることを願っています。ご協力いただきありがとうございます。
android - カスタムアダプタの動的要素を操作する
こんにちは、これはスタックの最初の質問です。このチュートリアルの動的グリッドを作成してい ますhttp://www.stealthcopter.com/blog/2010/09/android-creating-a-custom-adapter-for-gridview-buttonadapter/comment-page-1/
今ではかなりうまく機能しています。私のレイアウトはgridViewで構成されており、このgridViewの下にTextViewがあります。
問題は、フォーカスが変更されたときに(グリッド要素で)各IDに異なる情報を表示するようにTextViewを変更したいということです。ButtonAdapter内でOnFocusChangeListenerを使用しようとしましたが、textViewへの参照を取得しようとすると、findViewByIdが実装されていないと表示されます。
動的グリッド要素を処理できるようにするために、メインアクティビティでどのように参照を作成するのか疑問に思います。onCreate()には次のものがあります。
だから私はここから私のグリッド要素を処理したいのですが、何かアイデアはありますか?ありがとう
編集:私はさまざまなことを変更しようとしていますが、getViewメソッドからNullPointerExceptionを受け取ります。私はそれを機能させる方法を見つけることができません、私は助けてくれる人に感謝します、これは私のコードです:
ありがとう。
android - Android:アダプタのボタンの参照をアクティビティに渡す方法
全て、
クロノメータータイマーを開始および停止するボタンで満たされたリストビューがあります。各タイマーは、リストビューの各行内にも設定されます。アクティビティ内には、グローバルな開始ボタンと停止ボタンがあります。これらのボタンは、リストビュー内のすべてのタイマーを停止および開始することになっています。それらを停止するために、リストビュー内のすべてのタイマーへの参照を取得できないようです。リストビューの各行内のボタンへの参照すら取得できません。
以下は私のコードです。助けてください!
アダプターは次のとおりです。
public class TimersAdapter は BaseAdapter を拡張します {
ここに私の活動があります:
public class PenaltyBoxTimerActivity extends Activity { private Button _startTimersButton; プライベート ボタン _stopTimersButton; プライベート ListView _manageTimersList; TimersListAdapter _adapter;
android - BaseAdapter に整数を渡す
A.class が整数の配列を B.class の BaseAdapter に渡すように、整数配列を baseadapter に渡そうとしています。A.Class(送信者)で整数配列を渡す方法は次のとおりです。
そして、アクティビティ B の BaseAdapter で:
明らかに上記のコードは正しくありません。imageadapter で getintent を使用できません。しかし、これは私が達成しようとしていることの実例であり、可能であれば変数または配列をインテント経由で BaseAdapter に渡す方法を知りたいです。
android - アプリの実行中にListViewにリンクされたアダプター内のアイテムのビューを変更する
アプリのユーザーに、結果の表示方法を変更するオプションを提供しようとしています。
ビューごとに異なるレイアウトアイテムを作成し、BaseAdapter次のように拡張しました。
notifyDataSetChanged()新しいビューがインフレートされてgetView()メソッドから返されるため、呼び出しは(デバッグを通じて観察可能)ビューを更新します。
ただし、画面の表示は変更されていません...
足りないものはありますか?
android - Android: ListView のパフォーマンスがまだ十分でない場合はどうすればよいですか?
このトピックは以前も今も非常に多く議論されており、私はすでに多くのチュートリアル、ヒントを読み、それについての話を見ました。しかし、行が特定の複雑さに達すると、ListView のカスタム BaseAdapter の実装にまだ問題があります。したがって、私が基本的に持っているのは、ネットワークからの xml を解析することによって得られるいくつかのエンティティです。さらに、いくつかの画像などを取得します。これはすべて AsyncTask で行われます。getView() メソッド内でパフォーマンスを最適化する ViewHandler アプローチを使用し、誰もが提案するように convertView を再利用します。つまり、ListView を想定どおりに使用していることを願っており、SpannableStringBuilder でスタイル設定された単一の ImageView と 2 つの TextView を表示しているだけで、実際に正常に動作します (HTML.fromHTML は一切使用しません)。 .
そして今ここに来ます。複数の小さな ImageView、Button、および SpannableStringBuilder ですべて異なるスタイルの TextView を使用して行レイアウトを拡張すると、スクロール パフォーマンスが停止します。行は親として RelativeLayout で構成され、他のすべての要素はレイアウト パラメーターで配置されているため、行のレイアウトをよりシンプルにすることはできません。これほど多くの UI 要素を行に含む ListView 実装の例を見たことがないことを認めなければなりません。
ただし、ScrollView 内で TableLayout を使用し、AsyncTask ( onProgressUpdate() によって新しい行が着実に追加されます) で手動で埋めると、何百もの行があっても完全にスムーズに動作します。リストの最後までスクロールすると、新しい行が追加されると少しつまずきます。それ以外の場合は、スクロール時に常につまずく ListView よりもはるかにスムーズです。
ListView がうまく機能したくない場合に何をすべきか提案はありますか? TableLayout アプローチを使用する必要がありますか、それとも ListView をいじってパフォーマンスを少し最適化することをお勧めしますか?
これが私のアダプターの実装です:
これは行のxmlです(ボタンなし、まだつまずきます):
** * ** * ** * *更新* ** * ** * ** * ** *
結局のところ、問題は BaseAdapter の代わりに ArrayAdapter を使用することで簡単に解決されました。ArrayAdapter でまったく同じコードを使用しましたが、パフォーマンスの違いは非常に大きいです! TableLayout と同じくらいスムーズに実行されます。
そのため、ListView を使用しているときは常に、BaseAdapter の使用を絶対に避けます。これは、複雑なレイアウトに対して大幅に遅く、最適化されていないためです。例やチュートリアルでそれについて一言も読んでいなかったので、これはかなり興味深い結論です。あるいは、正確に読んでいなかったのかもしれません。;-)
ただし、これはスムーズに機能しているコードです (私の解決策は区切り記号を使用してリストをグループ化していることがわかります)。
+++++++++++++++++ トレースを含む 2 番目の編集 +++++++++++++++++++++ BaseAdapter が異なることを行うことを示すためだけにArrayAdapter よりも。これは、両方のアダプターでまったく同じコードを使用した getView() メソッドからのトレース全体です。
まずは通話量http://img845.imageshack.us/img845/5463/tracearrayadaptercalls.png
http://img847.imageshack.us/img847/7955/tracebaseadaptercalls.png
排他的な時間の消費 http://img823.imageshack.us/img823/6541/tracearrayadapterexclus.png
http://img695.imageshack.us/img695/3613/tracebaseadapterexclusi.png
包括的な時間の消費 http://img13.imageshack.us/img13/4403/tracearrayadapterinclus.png
http://img831.imageshack.us/img831/1383/tracebaseadapterinclusi.png
ご覧のとおり、これら 2 つのアダプターには大きな違いがあります (getView() メソッドでは ArrayAdapter の方が 4 倍高速です)。そして、なぜこれがそれほど劇的なのか、私にはまったくわかりません。ArrayAdapter には何らかの優れたキャッシングまたはさらなる最適化があるとしか思えません。
++++++++++++++++++++++++++もうひとつの更新++++++++++++++++++ 私の現在のUIBlogクラスがどのように構築されているかを示すには:
明確にするために、これを両方のアダプターに使用しています。