• Как с начала загрузить список, а затем его обновлять с помощью SwipeRefreshLayout?

    zagayevskiy
    @zagayevskiy Куратор тега Java
    Android developer at Yandex
    Вынеси код загрузки данных в отдельный метод, и вызови его в двух местах(при создании активити и внутри метода onRefresh)
    Ответ написан
    Комментировать
  • Как с начала загрузить список, а затем его обновлять с помощью SwipeRefreshLayout?

    @AlexVWill
    Второй случай явно неправильный, т.к. всетаки сначала должен загружаться список, а потом он должнен по свайпу обновляться. Поэтому ты ничего и не видишь, т.к. формирование списка происходит не вначале, а после срабатывания листенера setOnRefreshListener на элементе mSwipeRefreshLayout.
    Почему не работает вывод списка в первом случае - х.з., т.к. код ты скрыл (что за дурацкая привычка?), а телепаты все разъехались на Бали прочищать свои чакры.
    Но если там какой то RecyclerViever, то это работает приблизительно как то так:
    spoiler

    RecyclerView historyRecyclerView = binding.adrecyclerView;
            historyRecyclerView = historyRecyclerView.findViewById(R.id.adrecycler_view);
            HistoryViewRecycler historyView = new HistoryViewRecycler();
            historyView.initRecycler(historyRecyclerView);
    
            swipeRefreshLayout = binding.swipeRefreshLayout.findViewById(R.id.swipeRefreshLayout);
            swipeRefreshLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
                @Override
                public void onRefresh() {
                    //make new recycle view on swipe refresh
                    RecyclerView newhistoryRecyclerView = binding.adrecyclerView;
                    HistoryViewRecycler newhistoryView = new HistoryViewRecycler();
                    JSONArray newhistory = new HistoryViewRecycler().updateHistory(getContext());
                    if (newhistory == null) {
                        new History().getFullHistory(getContext());
                        //Snackbar.make(getActivity().findViewById(android.R.id.content), R.string.auth_error, 3000).setDuration(5000).show();
                    }
                    newhistoryView.initRecycler(newhistoryRecyclerView);
                    swipeRefreshLayout.setRefreshing(false);
                }
            });


    Не претендую на исключительность кода, это просто для примера.
    У тебя же в коде onRefresh() никакого обновления списка нет, кроме остановки кручения индикатора... ну и с какого перепугу он должен что-то там обновлять?
    Размести тогда уж код формирования списка в обоих разделах (как бы 1+2 пример совмести) и посмотри что получится.
    Ответ написан
    1 комментарий