При нажатии кнопки меню в MainActivity обновляются данные, изпользуемые в RecyclerView. Сам рецайклер сидит во фрагменте, пытаюсь сообщить ему, что данные изменились, примерно так:
Fragment f = getSupportFragmentManager().findFragmentById(R.id.frame_layout);
RecyclerView rv =(RecyclerView)f.getView().findViewById(R.id.RVNick);
rv.getAdapter().notifyDataSetChanged();
В результате ничего не меняется. Хотя вызов .notifyDataSetChanged() из самого фрагмента отлично всё обновляет. Пробовал также сделать рецайклер public static и обратиться напрямую, тоже не выходит. Что я делаю не так? Как правильно обновить Recycler? Заранее спасибо за помощь!
Я не совсем представляю как у вас реализован фрагмент и активити. Но допустим у вас есть активити в ней фрагмент не на весь экран, а кнопка находится именно в активити. Вы можете сделать это примерно так.
В адаптере создаете метод
public void replaceItems() {
notifyDataSetChanged();
}
После чего так же создаете интерфейс примерно так:
interface IFragmentController {
void updateAdapter();
}
В активити создаете экземпляр интерфейса:
private IFragmentController mFragmentController;
//some code
yourButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mFragmentController = (IFragmentController) getSupportFragmentManager()
.findFragmentById(R.id.fragment_container);
mFragmentController.updateAdapter();
}
});
Далее во фрагменте вам необходимо реализовать этот интерфейс
public class YourFragment extends Fragment implements IFragmentController{
//some code
@Override
public void updateAdapter() {
if(adapter!=null){
adapter.replaceItem();
}
}
}
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
В примерах кода в своей книге ("Структуры данных и алгоритмы") Лафоре не пользуется методом lengthА отдельно объявляет дину массива, например...
myRad имеет тип floatКто-нибудь знает, что нужно исправить? У меня есть другие переменные float, но они не подчёркнуты