Обновление списка действий на вкладках из основного действия

У меня есть основное действие с меню параметров, которое содержит проверяемый элемент. У меня также есть три вкладки с активностью, каждая из которых содержит список.

То, что я пытаюсь сделать, это обновить список выбранной вкладки, когда я изменяю пункт меню с возможностью проверки в основном действии.

Любая идея о том, как я могу достичь этого?


person Mazinger    schedule 18.08.2018    source источник
comment
У вас есть 2 действия, в одном из которых есть проверяемый список, а в другом - вкладки?   -  person NirmalCode    schedule 19.08.2018
comment
У меня есть одно основное действие с хостом вкладок -> Виджет вкладок, а затем три вкладки, каждая с одним действием и одним списком.   -  person Mazinger    schedule 19.08.2018


Ответы (3)


Обычно, когда у вас есть вкладки, вы используете пейджер представления, поэтому каждый фрагмент должен иметь возможность указать свое собственное меню параметров, сохраняя при этом область действия для текущего выбранного списка.

person L7ColWinters    schedule 18.08.2018

вызовите notifyDataSetChanged() на вашем адаптере в onResume() во фрагменте, который имеет список.

person Ümañg ßürmån    schedule 18.08.2018
comment
Проблема в том, что когда я касаюсь элемента меню, который находится в основном действии, действие выбранной вкладки (та, которое показано пользователю) не срабатывает при возобновлении, поэтому действие не знает об изменении. Это проблема на самом деле. - person Mazinger; 19.08.2018
comment
Каждая вкладка имеет право на фрагмент.. и список находится в этом фрагменте.. поэтому вызывайте notifyDataSetChanged() в этом onResume() фрагмента, а не в действии.. - person Ümañg ßürmån; 19.08.2018
comment
Но onresume Tab не срабатывает, когда я касаюсь элемента, который находится в основном действии. Может быть, вы можете сказать мне, как это сделать. - person Mazinger; 19.08.2018
comment
Конечно.. Можете ли вы вставить свой код.. Чтобы я мог увидеть и сообщить вам, как это сделать.. - person Ümañg ßürmån; 19.08.2018

Вы можете сделать обходной путь, чтобы сделать это. Использование глобального класса. Вы можете сохранить выбранное значение проверенного элемента в глобальном классе. И получить доступ к этому значению из любого места вашего кода. Как создать глобальный класс

Затем используйте TimerTask во фрагментах, чтобы проверить, изменился ли выбранный элемент, и перезагрузите данные.

Вот как реализовать TimerTask Сохраняйте предыдущиеItem и currentItem как строковые значения для проверки модификаций.

TimerTask timerTask;
Timer timer;
timerTask = new TimerTask() {
        @Override
        public void run() {
            runOnUiThread(new Runnable() {
                @Override
                public void run() {
                    //check if the checkable item is modified
                    currentItem = globalClass.getCheckedItem();
                    if(!previousItem.equalsIgnoreCase(currentItem)){
                        previousItem = currentItem;
                        //load your data
                    }
                }
            });
        }
    };
    timer = new Timer();
    timer.scheduleAtFixedRate(timerTask, 0, 200);

globalClass.getCheckedItem(); — это метод, используемый для получения выбранного элемента из globalClass. Вы можете установить значение при выборе элемента в меню параметров и не забудьте отменить таймер onPause()

@Override
protected void onPause() {
    if(timer != null){
        timer.cancel();
    }
    super.onPause();
}

Надеюсь, что это работает для вас.

person NirmalCode    schedule 19.08.2018
comment
Спасибо за ответ!. Я попробую. - person Mazinger; 19.08.2018