私はこれを何日も理解しようとしてきました。検索して検索して検索した後、私はあきらめてコミュニティに尋ねることにしました。どんな助けでも大歓迎です。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()はすでに折りたたみにリセットされています配列がクリアされ、「折りたたみ」に設定されるように状態を設定します。
前もって感謝します!