有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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时,如何保存和恢复SparseBooleanArrayFragmentA?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) 个答案