問題タブ [notifydatasetchanged]
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 - 別のフラグメントからローダーを更新する
2種類のクラスがあります。クラスA
とクラスB
。ClassA
はList<B>
クラス変数として a を持ちます。
これで、(カーソルで取得されたデータで形成された) インスタンスのリストをListFragment A
使用ACursorAdapter
および実装してロードする ができました。これはそれ自体でうまく機能します。LoaderCallBacks<Cursor>
A
また、ListFragment B
これを使用BCursorAdapter
して実装するため、インスタンスLoaderCallBacks<Cursor>
のリストをロードします。B
これは、それ自体でも正常に機能します (カーソルで取得されたデータで形成されます)。
ここで、選択した項目を ( を介してContentProvider
) から削除するListFragment B
と、すべての項目が特定のA
インスタンスを形成するようになり、対応する項目もA
データベースから削除されます。ただし、に戻ると ListFragment A
、カーソル ローダーには削除された情報がまだ含まれており、削除されたばかりのインスタンスを表示している間にnullpointerA
例外がスローされます。
ContentProvider
私の呼び出しのすべてのメソッドgetContext().getContentResolver().notifyChange(uri, null)
。しかし、まだ ListFragment A は更新されていません。
では、アダプター/カーソルの更新ListFragment A
を通知するにはどうすればよいですか?ListFragment B
どんな助けでも大歓迎です。
android - Android: ListFragment での onDataSetChanged() 呼び出しが機能しない
利用可能なすべての Bluetooth デバイスを一覧表示する ListFragment があります。ただし、アプリケーションでフラグメントを切り替えてから ListFragment に戻すと、アダプター内のすべてのデータはまだそこにありますが、リストには何も表示されません。コードは次のとおりです。
初めて ArrayAdapter にアイテムを追加し、notifyDataSetChanged を呼び出すと、完全に正常に動作します。ただし、ListFragment を離れて戻ってくると、以前と同じリストが表示されるはずですが、何も表示されません。以前のように ArrayAdapter にデータを再度追加しても、そうではありません。onCreateView 関数で ArrayAdapter にデータを追加している ArrayList が空ではありません。
アドバイスありがとうございます!
android - Android gridviewのアイコンセットを切り替える
私はアンドロイド開発が初めてです。私のアンドロイドactivity
にはGridView
と がありButton
ます。GridView adapter
クラスは に一連のアイコンを表示していますGridView
。私が望むのは、Button
アクティビティ内の がクリックされた場合、内のアイコンのGridView
セットを別のアイコンのセットに置き換える必要があるということです。また、アクティビティでクリックするたびButton
に、 の 2 つのアイコン セットが切り替わりますGridView
。それで、これを使用してこれを行う方法はnotifyDatasetChanged()
?助けてください。
GridView Adapter
クラス:
ボタンの onclick リスナー:
android - 画像が置き換えられたときにグリッドビューを動的に更新します。notifyDataSetChanged() が機能しない
GridView
SDカードから画像をロードする(存在する場合)それ以外の場合は、デフォルトの画像があります。画像が読み込まれると、ユーザーは任意の画像セルを選択して新しい写真を撮ることができます。デフォルトの写真が読み込まれGridView
、ユーザーが写真を撮るGridView
と、画像が更新されて表示されますが、ユーザーがセルをもう一度クリックして新しい写真を撮ると、GridView
更新されません。アプリを強制終了して再起動すると、新しい画像が表示されます。
試してみnotifyDataSetChanged()
ましたが、画像が更新されたときに機能しません。
コードは次のとおりです。
}
android - notifyDataSetChanged() が展開可能なリスト ビューを更新しない
私は使用してExpandable ListView
おり、その中のデータはデータベースを介して入力されていSqlite
ます。グループを削除するオプションを指定しましたExpandableListView
が、実際row
にはデータベース内のそれぞれが削除されます。ただし、アクティビティは更新されず、削除された「ケース」は、戻って this に戻るまで表示されますactivity
。
私はそれを作成しましclass
たextends *BaseExpandableListAdapter*
。すべてのoverridden
メソッドが含まれています。コードは次のとおりです。
今別のものがありますclass
RunningCase.java
which extends Activity
. これclass
は、 にデータを入力するために使用されExpandableListView
ます。OnLongClick()
のいずれかのグループを (長押し) するとExpandableListView
、 が表示されcontext menu
ます。には、そのケースをデータベースから削除して を更新するための [削除]context menu
オプションが含まれています。RunningCase activity
メソッドdb.getRunning()
は、db.getRunning_child()
データベースからデータを取得します。また、以下は完全に機能しているデータベースからケースを削除するコードです。
私を助けてください。activity
ケースを削除すると、 が更新され、削除されたケースが表示されなくなります。前もって感謝します!!
android - 私のGridView/ListViewは、Android API 18+でタッチした後にのみレンダリングされます
更新: BaseAdapter に基づくグリッドビュー/リストビューが Android 4.3 で動作しなくなりました。Android 4.2 以下で実行すると、正常に動作します。
毎回新しいビューを膨らませる「ダム」getView()で試してみましたが、何も変わりません。
元の質問:
リストビューとグリッドビューがあります。これらは、私のデータの 2 つの異なるグラフィック表現です。私の問題は両方に当てはまるので、これからは adapterview のみを記述しますが、両方を意味する可能性があります。
BaseAdapter を拡張するカスタム アダプターを使用して、アダプター ビューをセットアップします。ほとんどの場合は機能しますが、(PreferenceActivity インテントで) 設定を変更し、データセットを変更して notifyDataSetChanged() を呼び出すと、画面が更新されないことがあります。より正確には、一部の項目は更新されますが、残りは変更前と同じように画面に表示されます。
私は多くのチュートリアルを読み、Romain Guy のビデオを見ましたが、非常に基本的なことを見逃しているようですが、それが何であるかを理解できません。
デバッグを追加しましたが、奇妙なことに、notifyDataSetChanged() を呼び出した後、getCount() が呼び出され、番号が変更されたことがわかります。また、getView() を呼び出しても、アイテムが更新されません。画面上。ただし、画面に触れた後、すべてがレンダリングされます(ただし、表示されているすべてのビューに対して getView() が再度呼び出されます)
これは私の getView() 関数の始まりです:
convertView1 を CategoryListItemView にキャストする理由は、後で getView() でカスタム関数を使用するためです。
私のアダプタービューはGridViewまたはListViewのいずれかであり、それに応じてアイテムはcategory_grid_itemまたはcategory_list_itemのいずれかであり、2つの視覚化の間で変更するたびにアダプターを無効にします(とにかく私の問題はありません)
android - notifyDataSetChanged() は最後に更新されます
複合リスト ビューのモデル値を計算するRunnable
クラスがあります。そのランナブルには、カスタム スレッド内に UI スレッドがあります。そこにアダプターのnotifyDataSetChanged()
呼び出しがありnotifyDataSetChanged()
ますが、メインレイアウトの TextView 値を更新しようとした後です。問題は、実行中の TextView が最初に更新され、次に ListViews が更新されて更新される場合です。カスタムクラスが最後に更新されるということnotifyDataSetChanged()
は、Adapter
私には適していません。これらの画面の更新を同期する可能性はありますか?
サンプルコードは次のとおりです。
android - 複数の連続したアダプターの notifyDataSetChanged 呼び出しで ListView が更新されない
これは非常に深刻なバグのある動作であり、なぜこれが機能しないのかわかりません。
My Adapter (extending BaseAdapter
) は、2 つの独立したタイプのデータを結合します。1 つはカーソルで、もう 1 つは要素のリストを取ります。両方のセッターが data と force を受け取りますnotifyDataSetChanged()
:
これらの要素のデータはAsyncTaskLoader
、ローダー フレームワークを使用して 2 つの独立した方法で収集されます。具体的には、これらのセッターは対応するLoaderCallbacks.onLoadFinished
メソッドから呼び出されます。
ユーザーが異なるデータを表示することを選択すると、両方のローダーが my で起動されますFragment
。
の再描画を視覚化するために、アダプターのメソッドListView
内でログを記録します。getView
Android 4.3 を実行しているメインの開発デバイスでは、すべてが期待どおりに動作します。
1) ユーザー トリガーが変更される 2) 両方のローダーが起動する 3) 2 つのローダーが個別に起動し、それぞれが起動し、notifyDataSetChanged
多くのgetView
ログ出力が表示されますが、重要なのは、2 番目のローダーが終了した後、リストが再び再描画されることです。
概略的に:
- トリガーローダー1
- トリガーローダー2
- ローダー1完成
- ローダー 1 からの notifyDataSetChanged
- getView pos 1 (ローダー 1 のデータからの変更を反映)
- getView pos 2 (ローダー 1 のデータからの変更を反映)
- getView pos 3 (ローダー 1 のデータからの変更を反映)
- ローダー2完成
- getView pos 4 (ローダー 1 のデータからの変更を反映)
- ローダー 2 からの notifyDataSetChanged
- getView pos 5 (ローダー 1 のデータからの変更を反映)
- getView pos 1 (ローダー 2 のデータからの変更を反映)
- getView pos 2 (ローダー 2 のデータからの変更を反映)
- getView pos 3 (ローダー 2 のデータからの変更を反映)
- getView pos 4 (ローダー 2 のデータからの変更を反映)
- getView pos 5 (ローダー 2 のデータからの変更を反映)
リストには、新しい情報がうまく表示されます。
しかし、今では信じられません。Android 4.2 では、次のことが起こります。
- トリガーローダー1
- トリガーローダー2
- ローダー1完成
- ローダー 1 からの notifyDataSetChanged
- getView pos 1 (ローダー 1 のデータからの変更を反映)
- getView pos 2 (ローダー 1 のデータからの変更を反映)
- getView pos 3 (ローダー 1 のデータからの変更を反映)
- ローダー2完成
- getView pos 4 (ローダー 1 のデータからの変更を反映)
- ローダー 2 からの notifyDataSetChanged
getView pos 5 (ローダー 1 のデータからの変更を反映)
THE END - 2 番目のローダーの notifyDataSetChanged を反映する getView はもうありません。
これがより明確になることを願っています。
UIスレッドで常に呼び出されるnotifyDataSetChangedに関する私の仮定は、次のとおりです。呼び出すたびに、すべての要素の再描画を強制する必要があります。しかし、これは起こりません。