Nano Hash - криптовалюты, майнинг, программирование

Recyclerview прокрутить до определенной позиции

У меня есть recyclerview разных категорий. В каждой категории есть свои товары. Однако для получения продуктов мы должны вызвать API по отношению к категории и загрузить эти продукты в элемент категории как горизонтальный recyclerview. Все работает хорошо.

Я должен вызывать API продуктов только тогда, когда пользователь прокручивает страницу до этой конкретной категории. Когда пользователь прокручивает до определенной категории, мне нужно вызвать API списка продуктов и показать его внутри элемента категории.

Моя проблема в том, что я не мог определить видимый в данный момент элемент в recyclerview и не мог найти видимый элемент при прокрутке.


  • вы можете добавить scrollListener и получить currentScrollPosition из recyclerview, а затем проверить его 28.08.2018
  • Вопрос мне немного не ясен... Особенно второй абзац.. 28.08.2018
  • в вашем методе BindViewHolder установите флажок для специальной категории, и когда эта специальная категория будет вызвана, передайте ее своей активности через интерфейс 28.08.2018

Ответы:


1

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

@BindView(R.id.general_layout)
RecyclerView recyclerView;

прокручивать последним:

recyclerView.smoothScrollToPosition(recyclerView.getAdapter().getItemCount());

в классе адаптера:

    public class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {

            ViewHolder(View itemView) {
                super(itemView);
                itemView.setOnClickListener(this);
            }

            @Override
            public void onClick(View view) {
                if (mClickListener != null) mClickListener.onItemClick(view, getAdapterPosition());
            }
        }

// convenience method for getting data at click position
    private YourItemType getItem(int id) {
        return mData.get(id);
    }

    // allows clicks events to be caught
    public void setClickListener(ItemClickListener itemClickListener) {
        this.mClickListener = itemClickListener;
    }

    // parent activity will implement this method to respond to click events
    public interface ItemClickListener {
        void onItemClick(View view, int position);
    }
28.08.2018

2

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

   recyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {
        @Override
        public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
            super.onScrollStateChanged(recyclerView, newState);
        }

        @Override
        public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
        int lastVisibleItemIndex = recyclerView.getLayoutManager().findLastVisibleItemPosition();
         //When the position reaches the element or the one 

         }

    });
28.08.2018
  • onScrolled вызывается только один раз при первой загрузке. Затем он не вызывается при прокрутке 06.09.2018
  • этого не должно быть. Можете ли вы включить свой файл макета? 06.09.2018
  • Он находится внутри прокрутки. вот почему это происходит. Это макет домашней страницы. Я разместил его как родительский вид прокрутки. Затем линейный макет с вертикальной ориентацией. Внутри него слайдер для показа слайдеров, а затем наш рециклер. Как мне его изменить.? если я удалю прокрутку, ползунок не будет двигаться вверх при прокрутке. Пожалуйста, помогите мне? 08.10.2018
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

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

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

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

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..