|
436 / 161 / 28
Регистрация: 12.12.2020
Сообщений: 1,290
|
|
Узнать положение recyclerView16.10.2024, 02:41. Показов 1683. Ответов 10
Метки нет (Все метки)
AndroidStudio Java
Нужно узнать положение recyсlerView. Если он перемотан до конца вниз, то при добавлении новых элементов сдвигать его на последний элемент, если же он "отмотан" куда то то оставить как есть. Событие onScrooled выдает значения в абсолютных единицах и непонятно каких (пикселях что ли). Как узнать какой элемент сейчас отображается на экране?
0
|
|
| 16.10.2024, 02:41 | |
|
Ответы с готовыми решениями:
10
[Kotlin] Как узнать и сравнить положение двух imageView? Advanced RecyclerView и Expandable RecyclerView
|
|
754 / 351 / 90
Регистрация: 07.01.2023
Сообщений: 1,451
|
||
| 16.10.2024, 10:48 | ||
|
есть такой метод findViewHolderForLayoutPosition() в него надо передать индекс последнего видимого View. Надеюсь с этим проблем не будет? Далее вы получили ViewHolder, и уже от него ищите, последний это айтем в адаптере или нет.
0
|
||
|
436 / 161 / 28
Регистрация: 12.12.2020
Сообщений: 1,290
|
|
| 16.10.2024, 23:15 [ТС] | |
|
Так мне и нужно как раз узнать номер последнего видимого элемента.
Вообщем что мне надо: В recyclerView периодически добавляются элементы, ну типа сообщения лога. Вот. И когда добавляется новое то надо список подвинуть что бы последнее отобразить. Это я сделал. Но если пользователь отмотал куда-нить список что бы посмотреть что то там что было ранее, то не надо при добавлении нового элемента крутить список вниз к нему. То есть мне надо узнать, находится ли список в нижнем положении или нет.
0
|
|
|
67 / 43 / 5
Регистрация: 24.08.2013
Сообщений: 678
|
||||||
| 17.10.2024, 07:33 | ||||||
Сообщение было отмечено Alex1126 как решение
Решение
Попробуйте так:
1
|
||||||
|
754 / 351 / 90
Регистрация: 07.01.2023
Сообщений: 1,451
|
|
| 17.10.2024, 07:40 | |
|
Slon747, Это к стати тоже вполне рабочий вариант.
0
|
|
|
436 / 161 / 28
Регистрация: 12.12.2020
Сообщений: 1,290
|
|||||||||||||||||||||||||||||||
| 18.10.2024, 00:02 [ТС] | |||||||||||||||||||||||||||||||
|
Сделал, заработало. Спасибо большое. Ну и пошел я развивать эту мысль. Решил еще сделать что бы при появлении клавиатуры сообщения "поднимались" и последнее оставалось последним. Но какая то чертовщина получается.
Вообщем загружаются у меня сообщения при создании формы. Список двигаю вниз. Будем считать это исходным положением. Далее, ловим скролинг и запоминаем индекс последнего видимого элемента:
И запускаем. И вот тут начинается магия. Вот лог при запуске примерно такой:
Вызываем клавиатуру:
Но мы же упорные. Закрываем клавиатуру:
ОПЯТЬ вызываем клавиатуру:
0
|
|||||||||||||||||||||||||||||||
|
754 / 351 / 90
Регистрация: 07.01.2023
Сообщений: 1,451
|
|
| 18.10.2024, 07:34 | |
|
0
|
|
|
436 / 161 / 28
Регистрация: 12.12.2020
Сообщений: 1,290
|
||||||
| 19.10.2024, 22:41 [ТС] | ||||||
|
Так событие то отрабатывает. Просто команда результата не дает. Но только при первом срабатывании.
Мне тут пришло в голову, что дело в том что при первом запуске клавиатура "загружается" это занимает некоторое время, загружается он в отдельном потоке в фоне. А команда срабатывает типа до показа клавиатуры.... Добавлено через 51 минуту Засунул вызов просто в отдельный поток
0
|
||||||
|
754 / 351 / 90
Регистрация: 07.01.2023
Сообщений: 1,451
|
||||||
| 20.10.2024, 07:05 | ||||||
|
Alex1126, Ну тоже решение,только ресурсоемкое (создание экземпляра Thread)...
проще
0
|
||||||
|
436 / 161 / 28
Регистрация: 12.12.2020
Сообщений: 1,290
|
|||||||
| 20.10.2024, 14:11 [ТС] | |||||||
0
|
|||||||
|
436 / 161 / 28
Регистрация: 12.12.2020
Сообщений: 1,290
|
||||||||||||||||||||||||||
| 14.03.2025, 01:44 [ТС] | ||||||||||||||||||||||||||
|
Вообщем вся эта портянка решается намного проще.
Итак. Краткое содержание предыдущих серий: Есть recyclerView который отображает логи. Сверху вниз. Внизу самое последнее сообщение. Нужно следующее: 1. При открытии экрана список должен отмотаться в самый низ. 2. При появлении нового сообщение оно добавлялось и список к нему перематывался. Но только если на экране открыто "последнее" сообщение. Если список отмотан "в прошлое", то не перематывать к новому сообщению. 3. При появлении клавиатуры что бы список сдвигался вверх и на экране оставалось внизу то сообщение что было когда клавиатура была закрыта. Ну и соответственно я высчитывал положения списка при перемотки, отлавливал открытие клавиатуры, сам его (список) передвигал при появлении клавиатуры, запоминал положение и двигал его когда новое сообщение появлялось.... Все это решается просто. Устанавливаем у LinearLayoutManager свойство reverseLayout в true
В адаптере делаем обратный position
Добавлено через 38 минут Впринципе если достаточно что бы от клавиатуры список поднимался и опускался, то можно обойтись только
0
|
||||||||||||||||||||||||||
| 14.03.2025, 01:44 | |
|
Помогаю со студенческими работами здесь
11
Узнать положение курсора
Узнать положение курсора в RichEdit?
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
|
Отображение реквизитов в документе по условию и контроль их заполнения
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеСпецтехники", разработанного в конфигурации КА2.
Данный документ берёт данные из другого нетипового документа. . .
|
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
|
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2.
Задача: реализовать программный контроль на предмет проведения документа. . .
|
|
Программный контроль заполнения реквизитов табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2.
Задача:
1. Реализовать контроль заполнения реквизита. . .
|
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение:
DISM / Online / Add-Capability / CapabilityName:WMIC~~~~
Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
|
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2.
Задача: при создании документов установить период списания автоматически. . .
|
Вывод данных в справочнике через динамический список
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2.
Задача: вывести данные из ТЧ нетипового документа. . .
|