私はフラグメントから始める Android 初心者です。私の問題は次のとおりです。カスタムリストビューを表示するために使用されるフラグメントがあります(SherlockListFragmentを拡張しました)。リストビューにデータサーバーを追加しました。サーバーのデータを取得するアクションは別のスレッドで実行され、応答を管理するハンドラーがありました。このハンドラー (フラグメント内) で、アダプターのデータを回復し、アダプターを次のようにリロードしました((myAdapter) fragment.getListAdapter()).dataChange();
。さて、カスタムグリッドのリストを変換したかったので、アプリにとってははるかに優れていると思います。したがって、フラグメントは SherlockListFragment ではなく BaseFragment を拡張します。もう ListView を持っていないので、「getListAdapter.datachange()」は使えません。これを行う正しい方法を知っている人はいますか?前もって感謝します。
3 に答える
BaseAdapter から拡張された gridview のアダプターを作成するか、BaseAdapter から拡張されたアダプターを使用します。
次に、コレクションの内容が変更されたときに、そのアダプターで notifyDataSetChanged を呼び出します。
グリッド (またはリスト) ではなく、アダプターで変更を行うことをお勧めします。使用しているアダプターのタイプに応じて、いくつかの異なるアプローチがあります。
アレイアダプター
の場合ArrayAdapter
、標準の変更方法 ( add
、addAll
、clear
、remove
) を使用すると、すべてのビューが更新されます。
カーソルアダプタ
Aは、基になるデータを変更するためにまたはをCursorAdapter
使用することを除いて、ほとんど同じように機能します。これにより、基になるデータが変更されたことをすべてのデータ セット オブザーバーに通知する必要があります。swapCursor
changeCursor
すべてのアダプター
オブザーバーが通知を受け取らない場合 (通常setNotifyOnChange
は が呼び出されたために)、呼び出しmAdapter.notifyDataSetChanged()
て、基になるデータが変更されたすべてのリスナー (UI ビュー、サービスなど) を手動で更新できます。
迅速な対応に感謝します。私はあなたのアイデアを試しましたが、最終的には 2 列の行を作成して古いリストをグリッドに変換しました。ヘッダーとフッターをオンにしておくのが最善の選択肢でした。