java Restore Adapter的SparseBooleanArray of FragmentA在移动到FragmentB并使用back按钮返回时?
我有两个碎片。两者都有一个ListView和一个UserAdapter。Fragment B
的列表视图由Fragment A
的选定列表项组成。两个片段中当前选中(选定)的列表项都保存在SparseBooleanArray selectedIds
中
我通过Navigation Component
在片段之间导航,并传递一个数组,我通过读取SparseBooleanArray
值获得该数组:
FragmentADirections.ActionFragmentAToFragmentB action = FragmentADirections.actionFragmentAToFragmentB(array);
Navigation.findNavController(view).navigate(action);
ListView
项有一个附加的选择器,用于其背景绘图。我使用以下代码切换checked状态(它是适配器类中的一个自写方法):
listView.setOnItemClickListener((new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
adapter.toggleSelection(position);
}
问题:当移动到FragmentB
并返回Back Button
时,如何保存和恢复SparseBooleanArray
的FragmentA
?ListItem的后台状态保持选中状态,但mySparseBooleanArray
为空。我希望SparseBooleanArray
像以前一样填写
想法:这可能是因为我总是在onViewCreated()
方法中创建一个新适配器,而我的SparseBooleanArray
存在于适配器中?我如何恢复它
@Override
public void onViewCreated(@NonNull View view, @Nullable final Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
adapter = new UserAdapter(getContext(), R.layout.list_item, userList);
}
共 (0) 个答案