3

私はフラグメントから始める Android 初心者です。私の問題は次のとおりです。カスタムリストビューを表示するために使用されるフラグメントがあります(SherlockListFragmentを拡張しました)。リストビューにデータサーバーを追加しました。サーバーのデータを取得するアクションは別のスレッドで実行され、応答を管理するハンドラーがありました。このハンドラー (フラグメント内) で、アダプターのデータを回復し、アダプターを次のようにリロードしました((myAdapter) fragment.getListAdapter()).dataChange();。さて、カスタムグリッドのリストを変換したかったので、アプリにとってははるかに優れていると思います。したがって、フラグメントは SherlockListFragment ではなく BaseFragment を拡張します。もう ListView を持っていないので、「getListAdapter.datachange()」は使えません。これを行う正しい方法を知っている人はいますか?前もって感謝します。

4

3 に答える 3

3

BaseAdapter から拡張された gridview のアダプターを作成するか、BaseAdapter から拡張されたアダプターを使用します。

次に、コレクションの内容が変更されたときに、そのアダプターで notifyDataSetChanged を呼び出します。

アダプターとグリッドの小さな例

于 2013-08-07T13:57:12.003 に答える
1

グリッド (またはリスト) ではなく、アダプターで変更を行うことをお勧めします。使用しているアダプターのタイプに応じて、いくつかの異なるアプローチがあります。

アレイアダプター

の場合ArrayAdapter、標準の変更方法 ( addaddAllclearremove) を使用すると、すべてのビューが更新されます。

カーソルアダプタ

Aは、基になるデータを変更するためにまたはをCursorAdapter使用することを除いて、ほとんど同じように機能します。これにより、基になるデータが変更されたことをすべてのデータ セット オブザーバーに通知する必要があります。swapCursorchangeCursor

すべてのアダプター

オブザーバーが通知を受け取らない場合 (通常setNotifyOnChangeは が呼び出されたために)、呼び出しmAdapter.notifyDataSetChanged()て、基になるデータが変更されたすべてのリスナー (UI ビュー、サービスなど) を手動で更新できます。

于 2013-08-07T14:00:12.030 に答える
0

迅速な対応に感謝します。私はあなたのアイデアを試しましたが、最終的には 2 列の行を作成して古いリストをグリッドに変換しました。ヘッダーとフッターをオンにしておくのが最善の選択肢でした。

于 2013-08-13T08:05:35.887 に答える