問題タブ [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.

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

android - リスナーのコールバック メソッドから Android の BaseAdapter notifyDataSetChanged() を呼び出す

私はしばらくこれに苦労してきました。私のプロジェクトには、ListView と BaseAdapter を拡張するカスタム アダプターを含むアクティビティがいくつかあります。また、通常はデータが変更されたことを通知するいくつかのインターフェースも実装しています。

ただし、クラスに実装されているリスナー/インターフェイス メソッドから notifyDataSetChanged() を呼び出すと、ListView は更新されず、アダプター メソッドは呼び出されません (getCount()、getView())。

これは、notifyDataSetChanged() が呼び出された場所、つまりどのスレッドと関係があるかはわかっていますが、よく理解できず、この動作の簡単な説明を見つけることができませんでした。

この問題の回避策として、メソッドを定期的に呼び出すハンドラーを使用し、そのメソッドでブール値の「needsToBeUpdated」値が true であるかどうかを確認し、notifyDataSetChanged() メソッドを呼び出します。ただし、これは醜いので、非同期で行う方法が必要であると確信しています。

どんな助けでも大歓迎です。

私が話していることの疑似コード:

編集:もちろん、これをここに投稿したら、答えを見つけるのにほとんど時間はかかりませんでした...

私はそれをするのが嫌いですが、答えを探すためにもう少し努力しました。これのおかげで見つけたと思います: http://developer.android.com/resources/articles/painless-threading.html - そしてこれ: http ://developer.android.com/reference/android/os/Handler.html

解決策は非常に簡単です。メイン/UI スレッド以外のスレッドで UI を変更することはできません。そのため、コールバック メソッドで実行しても機能しません。ただし、UI スレッド (onCreate() メソッドなど) でハンドラを作成すると、ハンドラが UI スレッドに接続され、後でこのスレッドにイベントを投稿するために使用できます。

次に、Runnable インターフェースを実装する内部クラスが、UI の微調整が行われる場所で必要になります。

最後に、コールバック メソッドで、UpdateListRunnable クラスを使用せずに、ハンドラーを介してメイン スレッドにイベントをポストします。

そのおかげで、upadteLists() メソッドは UI スレッドで実行され、すべてがうまく機能します。

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

android - Androidのカスタムベースアダプタリストビューに最新のデータを追加する方法は?

リストビューでデータを表示するためのカスタムベースアダプタを使用してアプリケーションを実装しました。私のアプリケーションでは、コンテンツがWebサービスから取得されるカスタムベースアダプタを使用してリストビューにコンテンツを表示しました。最新のデータを取得するためのボタンを使用しました。サービスから最新のデータを取得したら、リストビューの以前のデータを削除せずに、下部のリストビューに最新のデータを追加したいと思います。

私は次のようにアプリケーションを実装しました:

ユーザーがボタンをクリックすることに基づいて上記のコードを実装しました。カウント値はサービスに送信され、サービスから最新のものを取得します。servieから最新のリストを取得すると、そのリストはリストビューに追加されます。

上記のコードから私は最新のものだけを取得することができます以前は削除しています。

上記の場合、リストビューに最新のデータ(リスト)を追加するにはどうすればよいですか?

どんな体でも助けてください…。

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

android - ListView 内のボタンがクリックされたときに別のアクティビティに移動する方法

内部がクリックされたActivityときに別のリストに移動する方法私はそれを膨らませているカスタムリストを持っており、ボタンもクリック可能にしていますが、ボタンが押されたときに別のリストに移動する方法.ButtonListViewgetview()Activity

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

android - android notifyDataSetChanged()は、リスト内の元のデータを削除します

ユーザーがリストの一番下までスクロールするときに、アダプターにアイテムを追加しようとしています。これは可能ですが、新しいアイテムをアダプターに追加して、すでに存在していたアイテムを保持したいのですが、現在は元のアイテムが削除され、新しいアイテムのみが表示されます。これをどのように達成できるかについてのアイデアはありますか?

これは私のコードがatmのように見えるものです:

私がしていることを明確にするためだけに。リストの一番下が表示されたら、さらにビデオをフェッチするAsyncTaskを開始します。asynctaskで、asynctaskが終了すると発生するイベントのリスナーとしてアダプターを設定しました。これは機能します。

onTaskFinished()上記の最後のメソッド-ここでは、アダプターが各リスト項目に入力するために使用する4つのリストに新しい項目を追加し、最後にアダプターに通知します。

したがって、新しいアイテムはすべて正常に追加されます。問題は、新しいアイテムが追加される前にあったアイテムが、何らかの理由で削除されるか、表示されなくなることです。

リストの長さが長くなることを確認したことを追加するのを忘れました。つまり、元のデータと新しく追加されたデータの両方が含まれています。

何か案は?

[編集]アダプタをリストビューに設定した場所のコードを追加する

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

android - セクション化されたリストビューのメモリ不足の問題

HI Guyz baseadapter を使用してセクション化されたカスタム リストビューを作成しましたが、問題なく動作しますが、何度もスクロールするとクラッシュしてメモリ不足の例外が発生するという問題が 1 つだけあります。私は私のgetview()コードを助けてください。

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

android - BaseAdapter の間違ったベースを表示するリスト

MyAdapter は BaseAdapter です。以下のようにその一部:

アクティビティで以下のように呼び出します。

アイコンにエラーが表示されるのはなぜですか? Icon 配列とは異なります。常にオンになっているアイコン アララーは「あり」です。そのため、リストには一度に 1 つのアイコンしか表示されません。ただし、複数表示されることもあります。それを変更する方法は?

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

android - DBからデータをフェッチするBaseAdapterを使用したListViewの実装

私はAndroidのListViewにDBからのデータを入力しようとしています。

セクションヘッダーを使用してListViewを実行する必要があるため、BaseAdapterを拡張するクラスを作成しました。

では、どうすればBaseAdapter拡張クラスを実装できますか?

どうもありがとう。

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

android - Androidでベースアダプターを使用してリストビュー中にカスタムレイアウトを作成する際のエラー

jsonを使用して、URLを介してmysqlデータベースから画像と名前を取得しています。リストビューで画像を表示できますが、名前は表示できません。getview メソッド内にカスタム ビューを作成したいのですが、カスタム ビューを作成すると、logcat にエラーが表示されます。コードを参照して、コードを編集して送信してください

レイアウト xml

imageview の mimage と itemname を textview に追加します。最後に、リストビューとしてmimageとitemnameが必要です

0 投票する
0 に答える
251 参照

android - 最初の Listview は notifyDataSetChanged() で更新されます 2 番目の ListView は更新されません

(タブホスト) Android アプリケーションに 2 つの ListView があります。どちらもカス​​タム BaseAdapter を使用します。両方の ListView が JSON ストリームを要求しています。JSON ストリームが読み込まれると、カスタム BaseAdapter は notifyDataSetChanged を呼び出します。

ListView でタブの 1 つを選択すると、リストが完全に読み込まれます。別のリストを含む別のタブを選択すると、リストが読み込まれません。タブを選択する順序は重要ではありません。tab1 を選択すると、tab1 が読み込まれ、tab2 はリストの読み込みに失敗します。最初にタブ 2 を選択すると、タブ 2 のリストが読み込まれ、タブ 1 を選択すると、このリストは失敗します。

このメソッドは、JSON ストリームが読み込まれるときにカスタム BaseAdapter で呼び出されます。

getView() メソッドは、最初に選択したタブで初めて呼び出され、2 番目に選択したタブでは呼び出されません。私は何を間違っていますか?

前もって感謝します!

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

android - BaseAdapter.notifyDatasetChanged() が ListView を更新しない

notifyDatasetChanged() を呼び出したときにリストビューが更新されないのはなぜですか? データを表示させる唯一の方法は、ListViewでsetAdatper()を再度呼び出すことです...私はrunOnUIThread()を介してそれを呼び出そうとしましたが、何も変更されませんでした

アダプター

アクティビティ

XMLLoaderThread は正常に動作します。notifyDatasetChanged は何もしていないようです...