onNavigationItemSelected в Android - PullRequest
0 голосов
/ 09 июля 2020

Я хочу обновить свой пользовательский интерфейс на основе текущего выбранного элемента из BottomNavigationView. Проблема в том, что идентификатор элемента будет изменен после выполнения всего метода внутри слушателя, а метод getSelectedItemId() будет ссылаться на элемент, который был выбран ранее, когда я вызвал его внутри метода updateUI().

Как я могу обойти это?

Вот код:

        mBottomNavigationView.setOnNavigationItemSelectedListener(new BottomNavigationView.OnNavigationItemSelectedListener() {
        @Override
        public boolean onNavigationItemSelected(@NonNull MenuItem item) {
            switch (item.getItemId()) {
                case R.id.navigation_baby:
                case R.id.navigation_you:
                case R.id.navigation_partner: {
                    updateUI();
                    return true;
                }
                default:
                    return false;
            }
        }
    });

Метод обновления:

Значение mBottomNavigationView.getSelectedItemId() относится к предыдущему выбору

private void updateUI() { 
    mBagListAdapter.setList(mPregnancyLab.getBagList(mBottomNavigationView.getSelectedItemId()));
    mBagListAdapter.notifyDataSetChanged();
}

1 Ответ

0 голосов
/ 09 июля 2020

Попробуйте это

    mBottomNavigationView.setOnNavigationItemSelectedListener(new BottomNavigationView.OnNavigationItemSelectedListener() {
        @Override
        public boolean onNavigationItemSelected(@NonNull MenuItem item) {
           
         mBagListAdapter.setList(mPregnancyLab.getBagList(item.getItemId()));
         BagListAdapter.notifyDataSetChanged();

        }
    });

Надеюсь, это поможет. Не стесняйтесь обращаться за разъяснениями ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...