3

私はこれを何日も理解しようとしてきました。検索して検索して検索した後、私はあきらめてコミュニティに尋ねることにしました。どんな助けでも大歓迎です。BaseExpandableListAdapterを拡張し、Lazy Image Loading手法を使用して、svgグラフィックをドローアブルに解析し、それらのドローアブルを拡張可能リストの子として設定しています。すべてが完璧に機能します。

展開可能なリストが生成され、svgが解析されてバックグラウンドでロードされている間、折りたたまれた状態になります。ユーザーがグループを展開し、子がロードを完了していない場合、単純な「ロード中...」メッセージが表示されます。AsyncTasksのいずれかが終了してonPostExecuteを起動するとすぐに、拡張可能なリストビューが別のドローアブルで更新され、拡張されたグループは折りたたまれた状態にリセットされます。

問題: AsyncTasksがリストを更新したときにグループがリセットされないように、グループの展開/折りたたみ状態を保存する方法がわかりません。onContentChangedExtended()を明示的に呼び出すと、リスト全体が初期状態にリセットされ、アクティビティがビューを暗黙的に更新すると、展開/折りたたみ状態が保存されるようです。それはどのようにそれをしますか?

また、最初にすべてのグループを強制的に展開することは、展開可能なリストの目的全体を上回るため、オプションではありません。

public class ListAdapter<T> extends BaseExpandableListAdapter {
  // Some implementation here.
}

これは、グループにデータを設定する子オブジェクトです。

public class Expression {
  /* Some implementation here.
   * .
   * .
   * .
   */

  // ListViewGenerator extends ExpandableListActivity
  private class ParseSVG extends AsyncTask<ListViewGenerator, Void, ListViewGenerator> {
    /* Parse svg in background.
     * .
     * .
     * .
     */
    @Override
    protected void onPostExecute(ListViewGenerator listView)
      {listView.onContentChangedExtended();}
  }
}

getGroupView()内のisExpandedをブール配列に保存して、ExpandableListActivityからexpand /collapse状態を復元しようとしましたが、onContentChangedExtended()が呼び出されるとすぐに、getGroupView()はすでに折りたたみにリセットされています配列がクリアされ、「折りたたみ」に設定されるように状態を設定します。

前もって感謝します!

4

0 に答える 0