我在片段中有一个可展开的列表视图,并在列表的 onGroupExpand 函数中将列表设置为一次仅展开一行。活动运行时一切正常。一旦从保存的实例状态恢复活动,就永远不会调用函数 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();
}
任何帮助,将不胜感激。