フラグメントに展開可能なリスト ビューがあり、リストの onGroupExpand 関数で一度に 1 行だけ展開するようにリストを設定しました。アクティビティが実行されている間、すべてが正常に機能します。アクティビティが保存されたインスタンスの状態から再開されると、関数 onGroupExpand が呼び出されることはありません。リストのリスナーをリセットしようとしましたが、まだ機能していません。
以下は、グループ展開機能を制御するためのコードです。
private void setListExpandListener()
{
final ExpandableListView list = (ExpandableListView)getActivity().findViewById(android.R.id.list);
list.setEmptyView(getView().findViewById(R.id.no_mixes_empty_list_view));
list.setOnGroupExpandListener(new OnGroupExpandListener()
{
@Override
public void onGroupExpand(int groupPosition)
{
collapseGroupAtPosition(list, groupPosition);
}
});
}
private void collapseGroupAtPosition(ExpandableListView list,int position)
{
if (parentRowPosition != -1 && parentRowPosition != position)
{
list.collapseGroup(parentRowPosition);
}
parentRowPosition = position;
}
変数parentRowPositionの状態を保存し、フラグメントの復元状態で取得しようとしています。
検索は正常に機能しますが、リスナーは機能せず、リストのすべての行を一度に展開できます。
リスナーが設定されているコードは次のとおりです。
public void onViewCreated(View view, Bundle savedInstanceState)
{
mAdapter = new SavedTankExpandableListAdapter(getActivity());
mAdapter.setDeleteListener(this);
setListExpandListener();
setListenersForViews();
setOverlayAccordingToAppLaunchCount();
super.onViewCreated(view, savedInstanceState);
}
public void onActivityCreated(Bundle savedInstanceState)
{
super.onActivityCreated(savedInstanceState);
onRestoreState(savedInstanceState);
}
public void onRestoreState(Bundle savedInstanceState)
{
if(savedInstanceState==null)
return;
parentRowPosition=savedInstanceState.getInt("parentRowPosition",0);
Utility.LHTLogs("Parent Row Position "+ parentRowPosition, true);
if(mAdapter==null)
mAdapter = new SavedTankExpandableListAdapter(getActivity());
setListExpandListener();
}
どんな助けでも大歓迎です。