Как мы можем обнаружить, что текущий вид не виден из-за прокрутки? - PullRequest
0 голосов
/ 25 августа 2018

С точки зрения переработчика, для эффективности используется шаблон держателя.
Когда мы прокручиваем список переработчика, элементы создаются, как показано на рисунке, создаются или используются повторно.
У меня вопрос: если элемент прокручивается вне видимости, а соответствующий вид не виден, есть ли какой-нибудь метод, который указывает на это? Например. если мы загружаем ресурс в виде, и нам нужно отменить загрузку, когда пользователь прокручивает вид, это происходит автоматически или есть какой-то вызов метода, который нам нужно реализовать в ViewHolder, или что-то еще?

1 Ответ

0 голосов
/ 25 августа 2018

Вы можете переопределить этот метод RecyclerView, чтобы проверить, когда элемент подвергается переработке.

    @Override 
    public void onViewRecycled(RecyclerView.ViewHolder holder) {
        super.onViewRecycled(holder);
        // check if download is in progress and stop it.
    }

Вызывается, когда представление, созданное этим адаптером, было переработано.

Aпредставление перерабатывается, когда RecyclerView.LayoutManager решает, что его больше не нужно подключать к его родительскому RecyclerView.Это может быть связано с тем, что он вышел из-под контроля или набор кэшированных представлений, представленных представлениями, все еще прикрепленными к родительскому RecyclerView.Если к представлению элемента привязаны большие или дорогие данные, такие как большие растровые изображения, это может быть хорошим местом для освобождения этих ресурсов.

RecyclerView вызывает этот метод непосредственно перед очисткой внутренних данных ViewHolder и отправкой его в RecycledViewPool.Таким образом, если ViewHolder содержал действительную информацию до повторного использования, вы можете вызвать getAdapterPosition (), чтобы получить позицию адаптера.

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