Программно добавленный элемент в представление навигации не отображается - PullRequest
0 голосов
/ 24 марта 2020

У меня есть навигационное представление, в котором я программно добавляю элементы, и я использую и arrayList для их хранения, а затем удаляю их, когда я добавляю элементы в первый раз и удаляю их, все работает нормально, но когда я добавляю снова элементы после того, как я их удалил, они удаляются, но они все еще видны в окне навигации. Как решить эту проблему?

Это мой код:

            int position = navViewArray.findItemString(checkItemTitle);
            if (position == -1) {
                Toast.makeText(this, "Error", Toast.LENGTH_SHORT).show();
            } else {
                try {

                    MenuItem prevMenuItem = navigationView.getMenu().getItem(position + 2);
                    prevMenuItem.setChecked(true);
                    prevMenuItem.setCheckable(true);
                    prevMenuItem.setVisible(true);

                    NavItem navItem = navItems.get(position);
                    navItems.remove(navItem);
                    navViewArray.removeItem(navItem);

                    Toast.makeText(this, " List " + navItem.getName() + " deleted ", Toast.LENGTH_SHORT).show();

                    prevMenuItem.setVisible(false);

                    if (!navItems.isEmpty()) {

                        NavItem prevNavItem = navItems.get(navItems.size() - 1);

                        Toast.makeText(this, "PrevItem: " + prevNavItem.getName(), Toast.LENGTH_SHORT).show();
                        checkItemTitle = prevNavItem.getName();


                        ListFragment listFragment = new ListFragment();

                        /* store data in arguments Bundle */
                        getSupportActionBar().setTitle(prevNavItem.getName());

                        Bundle args = new Bundle();
                        args.putString(KEY_LIST_NAME, prevNavItem.getName());
                        listFragment.setArguments(args);

                        getSupportFragmentManager().beginTransaction()
                                .replace(R.id.fragment_container, listFragment)
                                .commit();
                    } else {
                        getSupportFragmentManager().beginTransaction()
                                .replace(R.id.fragment_container, new InboxFragment())
                                .commit();
                        getSupportActionBar().setTitle(INBOX__TEXT_CONSTANT);
                        checkItemTitle = INBOX__TEXT_CONSTANT;

                        MenuItem lastPrevMenuItem = navigationView.getMenu().getItem(2);
                        lastPrevMenuItem.setVisible(true);
                        if (lastPrevMenuItem.isVisible()){
                            setVisible(false);
                            Toast.makeText(this, "Else called " + lastPrevMenuItem.getTitle(), Toast.LENGTH_SHORT).show();
                        } else {
                            Toast.makeText(this, "Not visible", Toast.LENGTH_SHORT).show();
                            //else is called and it says that the item is not visible

                        }
                    }

                } catch (IndexOutOfBoundsException e) {
                    Toast.makeText(this, "Error", Toast.LENGTH_LONG).show();
                }
            }
        }

navigation drawer

...