Вениамин
Или сделай метод байнд у холдера и меняй там
Не совсем понял, вот как это выглядит if (listOfRoutes != null) { holder.bind(listOfRoutes.get(position), position, mProductClickCallback); }
Вениамин
Ну свиду тут вроде нормально все )
Я специально бы не смог сделать так, как он делает случайно)
Starikov
Я специально бы не смог сделать так, как он делает случайно)
Может заново написать? Авось рассосётся
DarkPerl
Я специально бы не смог сделать так, как он делает случайно)
Попробуйте проверить все прям по строчкам. Начиная с типизации class ContentAdapter extends RecyclerView.Adapter<ContentAdapter.ViewHolder> в том примере. Посмотрите, что в холдере.
DarkPerl
Тут явно какая то ошибка в коде.
DarkPerl
И попробуйте повесить обработчик прям в коде, а не в разметке
Starikov
Тут точно все нормально, можно адаптер посмотреть?
Вениамин
Еще раз по порядку попробую. Во вью происходит следующее android:onClick="@{listener::onClickToItem}" <variable name="listener" type="fragments.route.ProductClickCallback1"/> Здесь все вроде четко. Затем сам обработчик: public void onClickToItem(View v){ ListOfRouteBinding mBInd = DataBindingUtil.bind(v); mBInd.setIsVisible(true); } Как сетим обработчик? public ListOfRouteAdapter() { this.mProductClickCallback = new ProductClickCallback1(); } Затем передаем его в холдер @Override public void onBindViewHolder(@NonNull RouteViewHolder holder, int position) { if (listOfRoutes != null) { holder.bind(listOfRoutes.get(position), position, mProductClickCallback); } } После это делаем public void bind ( final RouteModel listOfRoutes, int position, ProductClickCallback1 mProductClickCallback) { mBind.routeName.setText(listOfRoutes.getPointName()); mBind.operationType.setText(listOfRoutes.getEstimatedTime()); mBind.numTxt.setText(String.valueOf(position + 1)); mBind.setListener(mProductClickCallback); }
Вениамин
И попробуйте повесить обработчик прям в коде, а не в разметке
Пробовал, тоже самое. Решил бороться с биндиногом, больше возможностей
Вениамин
Попробуйте без ListOfRouteBinding mBInd = DataBindingUtil.bind(v); mBInd.setIsVisible(true); Напрямую поменять
mBInd.setIsVisible(true); Visible это переменная во вью. Суть в том, что в зависимости от этой переменной отображается один текст или другой
DarkPerl
mBInd.setIsVisible(true); Visible это переменная во вью. Суть в том, что в зависимости от этой переменной отображается один текст или другой
Вы view получаете, попробуйте сразу что то изменить там. Чтобы убедиться, что все работает.
Вениамин
Вениамин
Ждем )
Удаляет, также каждый 10) Хотя не совсем 10, примерно через 10
Starikov
Что-то отправить?
Не, я выше уже посмотрел код
Starikov
Удаляет, также каждый 10) Хотя не совсем 10, примерно через 10
С видимостью у меня была проблема помню, решил тем что просто удалял айтем из списка источника, но саму проблему уже не помню
Вениамин
Ждем )
Еще пробовал на каждый view передавать новый экземпляр обработчика, он делает то же самое
Вениамин
Покажите что у вас в onCreateViewHolder
@NonNull @Override public RouteViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { LayoutInflater inflater = LayoutInflater.from(parent.getContext()); ListOfRouteBinding binding = ListOfRouteBinding.inflate(inflater, parent, false); return new ListOfRouteAdapter.RouteViewHolder(binding.getRoot()); }
Сергій
Удаляет, также каждый 10) Хотя не совсем 10, примерно через 10
Для того что ты делаешь, это обычное поведение
Вениамин
Для того что ты делаешь, это обычное поведение
Вот это поворот. Можно подробнее?
Sergey
Всем привет!) Народ можно как то видео обрезать без всяких либ) просто грубо говоря метод который принимает путь до видео режет это видео до 30 секунд и сохраняет пс. без всяких ползунов и всякой херни, чисто код
Сергій
Для начала надо почему в названии RecyclerView, присутствует слово Recycler
Сергій
Вот это поворот. Можно подробнее?
Надо почитать что это за вью и как она работает, без этого никак, это основы
Вениамин
Надо почитать что это за вью и как она работает, без этого никак, это основы
Генерит список view сохраняя оптимальное использование памяти на основе списка объектов, переданного в листе( в данном случае)
Вениамин
Что значит оптимальный )
В буфере хранится только то что видно
Сергій
Ключевое слово Recycle. Почитай пожалуйста на каком-нибудь start-android или оф доку
Вениамин
DarkPerl
Да, я даже счетчик прикрутил все сто элементов по порядку
Попробуйте повесить обработчик тут onCreateViewHolder(...) { //... view.setOnClickListener(yourClickListener); return new YourHolder; }
Вениамин
Попробуйте повесить обработчик тут onCreateViewHolder(...) { //... view.setOnClickListener(yourClickListener); return new YourHolder; }
Кажется вы правы : Click listener Устанавливайте обработчик кликов в onCreateViewHolder(...). Всякий раз, когда пользователь кликает по элементу списка, viewHolder сообщает позицию адаптера, где этот клик произошёл (vh.getAdapterPosition()). Это важно, потому что элементы могут перемещаться внутри адаптера, и связанные с ними view-компоненты не будут пересоздаваться. Сейчас попробую
Вениамин
Да, пробуйте.
На обед погнал :D
DarkPerl
На обед погнал :D
Приятного )
Вениамин
Вениамин
Ключевое слово Recycle. Почитай пожалуйста на каком-нибудь start-android или оф доку
Туплю. Переиспользование элементов, видимо здесь и есть прикол
Вениамин
👍
Раскрывайте карты) Он переиспользует элементы и получается также и элемент который меняется, из-за этого получается, что этот элемент дублируется. Так?
Сергій
Ясли вам надо хранить состояние элементов, храни его не во вью, а отдельно
DarkPerl
Раскрывайте карты) Он переиспользует элементы и получается также и элемент который меняется, из-за этого получается, что этот элемент дублируется. Так?
У меня была ситуация недавно, когда я хотел тащить данные из кэша, который менялся из множества потоков ) Я не хотел внутри adapter заводить список чтобы сэкономить памяти ) Ну и долго мучался с вопросами как же так сделать чтобы брать каждый раз уникальный элемент ))) Вообщем, сам себе выстрелил в ногу ) И как выяснилось, так делать нельзя и даже на 1 потоке будут проблемы )
Denis
можно сделать так, чтобы он не переиспользовал
DarkPerl
вообще так сделать можно, но не стоит)
Ну, это головная боль еще та ))))
Denis
но это грязно
DarkPerl
Мне почему то показалось, что данные тащить во view не нужно и как то плохо, для этого же есть RepositoryCahce )))) Ну вот и промучался )))
Denis
Смысл же теряется
я же сказал, что так делать не стоит
Александр
всем привет. надо передать на сервер параметр типа bolean как form-data. использую ретрофит. но RequestBody.create не принимает boolean. что то погуглил ничего не нашел
Александр
Александр
Sergey
Народ)) нужна помощь) можно как то видео укоротить без использования библиотек?) просто укороить выбраноое видео до 30сек и пересохранить его
Сергей
Смотри, у тебя же биндятся все элементы в методе ресайклера. В этом месте нужно на каждый элемент ставить отдельный он клик, ща поищу статью
Не надо ставить сто листенеров разных через new если можно обойтись одним, созданным заранее, и как то в момент клика скормить ему позицию. А если их тысяча будет? Тысяча анонимных классов, каждому память отведи а потом почисти?
Даниил
Хлопцы, добавил room базу в проект. Сущность у меня содержит notNull поля. Как мне ревершин сделать, чтобы я мог хранить null значения?
Сергей
Убрать nonNull вероятно.
Сергей
Или сделать значение псевдоNull, которое будет превращаться в null при чтении. Но это костылище
Anya
Нужна подсказка с Android TV. Кто-нибудь пробовал во VerticalGridSupportFragment создать кнопку с настройками? Это вообще возможно? Я искала в гугле, но не похоже, что кто-то так смог сделать. :(
Влад
Подскажите, а fab-у можно задать как фон картинку? Нигде не нашел рабочий вариант. Только фон меняется
Sergey
на сколько плохо иметь проект на котлине и модулм на джаве? или это пох не влияет на время билда?
Влад
Через кастомные стили задать можно
Можно ссылку или пример, я пробовал но не вышло, возможно что то не так делал
Август Романович
Открытка @DucksBlo
Eric
Коллеги, вопрос такой. Надо провести интерью с потенциальным коллегой. Что спросить? ___ Я проводил интервью последний раз года 3 назад и боюсь вопросы про асинк таски уже не актуальны :)
Sergey
ну хотя бы на какой уровень собеседование?
Eric
Джун и мидл.
Eric
2 собеседования.
Andrey
Всем привет. Подскажите как правильно написать запрос в Room: “SELECT *FROM photos ORDER BY datatime(datatime) DESC LIMIT(5)” Но если из api приходит скажем так 2-е картинки то показывает 2-е новых сначала и дальше предыдущие 3-и. Как убрать эти 3-и если их небыло в api ?