Anonymous
Как определить версию андроида, если кратко.
Сергій
https://stackoverflow.com/a/3940823
Anonymous
эээ, это не те шорткаты что я спрашевал выше )
А я так понял, что нужно использовать те шорткаты, которые вы подсказали, когда версия андроид выше 7.1. Я прав? Или есть какой то способ заставить работать мой код на всех версиях от 4.4?
Сергій
он должен работать везде
Anonymous
он должен работать везде
Но почему-то при использовании эмулятора с 8.0 и выше, он даже не появляется. И ошибок никаких нет.
Сергій
🤷🏿‍♂️
Yehor
Хочу разрабатывать приложения. Какой телефон купить для этого? Чисто как тестовая станция.
Yehor
Так, мнения разошлись
Сергій
народный
Yehor
Мне тут подсказали лучше брать где голый android, без оболочек
Кирилл
Серию Mi A от Xiaomi Mi A2 Lite\ Mi A3
Либо пиксель. На нём уже есть десятка, в отличие от А.
Nick
Либо пиксель. На нём уже есть десятка, в отличие от А.
Парню чисто как тестовая станция, не думаю что есть смысл так тратиться
Nikita
всем добрый вечер, у меня есть вопрос насчет diffUtil. Есть список в recyclerView из карточек (1 ячейка), плашки загрузки и плашки ошибки (по 3 ячейки), gridLayoutManager (3 ячейки). В списке пусть 40 карточек и в конце плашка ошибки, там есть кнопка Try again, при клике на нее в адаптер сетится список из тех же 40 карточек и плашки загрузки, запускается корутина, которая считает diffUtilCallback и применяет его к адаптеру. Проблема заключается в том, что когда пользователь находится в конце списка и нажимает кнопку на плашке ошибки, последние 1, 4 или 7 карточек исчезают, список поднимается, а потом они рисуются снова, и собственно в конце плашка загрузки. Если использовать notifyDataSetChanged, список не сдвигается вверх, как и надо. Почитал статьи про diffUtil, вроде правильно реализовал callback, в отладчике полчаса смотрел как что работает. Подскажите где может быть лажа, я посмотрю, спасибо тем кто дочитал и помог)
Yehor
Всем спасибо за ответы)
Yakov
всем добрый вечер, у меня есть вопрос насчет diffUtil. Есть список в recyclerView из карточек (1 ячейка), плашки загрузки и плашки ошибки (по 3 ячейки), gridLayoutManager (3 ячейки). В списке пусть 40 карточек и в конце плашка ошибки, там есть кнопка Try again, при клике на нее в адаптер сетится список из тех же 40 карточек и плашки загрузки, запускается корутина, которая считает diffUtilCallback и применяет его к адаптеру. Проблема заключается в том, что когда пользователь находится в конце списка и нажимает кнопку на плашке ошибки, последние 1, 4 или 7 карточек исчезают, список поднимается, а потом они рисуются снова, и собственно в конце плашка загрузки. Если использовать notifyDataSetChanged, список не сдвигается вверх, как и надо. Почитал статьи про diffUtil, вроде правильно реализовал callback, в отладчике полчаса смотрел как что работает. Подскажите где может быть лажа, я посмотрю, спасибо тем кто дочитал и помог)
Equels и hashcode правильно переопределены?
Yakov
всем добрый вечер, у меня есть вопрос насчет diffUtil. Есть список в recyclerView из карточек (1 ячейка), плашки загрузки и плашки ошибки (по 3 ячейки), gridLayoutManager (3 ячейки). В списке пусть 40 карточек и в конце плашка ошибки, там есть кнопка Try again, при клике на нее в адаптер сетится список из тех же 40 карточек и плашки загрузки, запускается корутина, которая считает diffUtilCallback и применяет его к адаптеру. Проблема заключается в том, что когда пользователь находится в конце списка и нажимает кнопку на плашке ошибки, последние 1, 4 или 7 карточек исчезают, список поднимается, а потом они рисуются снова, и собственно в конце плашка загрузки. Если использовать notifyDataSetChanged, список не сдвигается вверх, как и надо. Почитал статьи про diffUtil, вроде правильно реализовал callback, в отладчике полчаса смотрел как что работает. Подскажите где может быть лажа, я посмотрю, спасибо тем кто дочитал и помог)
Я про дата класс который ты сравниваешь в дифе
Nikita
карточки представлены data class, а плашки ошибки и загрузки class ErrorItem : ListItem и class LoadingItem : ListItem
Nikita
Equels и hashcode правильно переопределены?
у последних ничего не переопределил
Yakov
у последних ничего не переопределил
А что сравниваешь в дифе? По каким параметрам?
Nikita
А что сравниваешь в дифе? По каким параметрам?
areItemsTheSame сравнивает классы, если одинаковые идет проверка на плашку загрузки и ошибки, если это они вернет true, если карточка, сравнивает по id, AreContentsTheSame : если это не карточка, сравнивает классы и если они одинаковые вернет true, если карточка вернет oldItem == newItem
Nikita
могу в личку код скинуть если так плохо звучит
Yakov
могу в личку код скинуть если так плохо звучит
Кидай сюда только через гист и дата классы не забудь
Yakov
через гит?
Gist позволяет шарить код, можно и из студии, кидай сюда думаю может ещё кто поможет, классы модели не забудь
Anonymous
🤷🏿‍♂️
И всё таки, так и не могу понять почему не появляется. На другом эмуляторе тоже не работает. Также не работает на сторонних лаунчерах. В логах тоже ничего
Nikita
https://gist.github.com/RyzhkovNikita/b71ce168ea28c0f0f69ecbd56d960112
влад
гайс, после обновления студии на 3.5 постоянно начала вылазить ошибка сборки build\intermediates\cmake\debug\obj\arm64-v8a\libc++_shared.so (Запрошенную операцию нельзя выполнить для файла с открытой пользователем сопоставленной секцией) шо делоть? добавлять исключения для виндовс дефендер? помогает шифтделетить папку build вручную, просто делет говорит, что файл занят другим процессом
Yakov
if (oldList[oldItemPosition] !is CharToShowItem) return oldList[oldItemPosition]::class == newList[newItemPosition]::class
Вячеслав
Добрый вечер, в этом чате можно спрашивать про котлин нэтив?)
Yakov
попробуй убрать это, вроде как у тебя areItemsTheSame вернется true тут ты уже сравниваешь дата класс
Yakov
ErrorItem и LoadingItem сравнивать то нечего
Nikita
попробуй убрать это, вроде как у тебя areItemsTheSame вернется true тут ты уже сравниваешь дата класс
вроде как он сравнивает в theSame, и если он true идет уже в sameContent, но сейчас попробую
Nikita
упало
Yakov
вроде как он сравнивает в theSame, и если он true идет уже в sameContent, но сейчас попробую
areContentsTheSame попробуй по name и imageUrl сделать сравнения а не полностью по классу, в общем вроде все верно .
Nikita
не конааает, спасибо большое, если что, сеттинг листа выглядит так
Arsen
а что не пошло? данные хоть иммутабельные?
Impossible
не конааает, спасибо большое, если что, сеттинг листа выглядит так
А зачем ты убиваешь scope перед началом работы?
влад
Закрой студию для начала)
у меня при каждой пятой сборке эта ошибка вылазит, что мне, гасить студию каждый раз чтоль?)
Impossible
Именно в этой последовательности
влад
собсно он на клине и зафейлится :)
Impossible
собсно он на клине и зафейлится :)
Это ты пробовал или предполагаешь?
влад
Impossible
При билде я еще поверил бы
Starikov
подскажите. как правильно сделать анимацию, чтобы картинка вышла из одного края экрана и ушла за другой?
Łeő
Ищу разработчика, который знает как сделать, чтобы со звонящего аппарата стримело вызов и передавало управление трубкой на удаленное устройство. Voice стриминг+dialer? (тел+сим+инет-приложение => тел-без сим+приложение принимающее,с dialer) У кого есть опыт с voice? Сколько примерно такое стоить будет?
Starikov
А в чём сложность?
А чё то туплю уже
Impossible
А чё то туплю уже
Самая простая анимация, загугли уроки Александра Климова
Fagor
при таком макс сроки бэкенда спрашивать, и вообще есть ли кто возьмется и есть ли опыт такой реализации, для остального недостаточно вводных
Fagor
Есть вариант при опыте, спросить архитектора-аналитика - почем возьмутся написать ТЗ с архитектурой
Lefmy
Hello ! I would like a code on android studio to list files with extension .kml , then click file, open
Alexander
всем привет. Возникла необходимость интегрировать камеру в андроид получение. Кейс довольно простой, фото+вспышка + фронталка+автофокус. Фотографий надо будет делать много, вызывать камеру от вендора слишком долго. Решено написать свое решение. Я когда-то делал камеру на основе примеров от гугла, и схватил кучу проблем на девайсах самсунга и хуавеях. Сейчас решил поискать что-то - где все костыли уже внедрены. Может кто-то посоветовать удачные опенсорс решения которые можно взять за основу?
Dmitry
Opencamera
Александр
Кто - нибудь сталкивался с интересным поведением AS 3.5, что автоформатирование кода в xml файлах меняет элементы местами? После alt + ctrl + l у меня <include> блок переставляется вниз вёрстки. Что за прикол такой?
Alexander
Opencamera
спасибо, посмотрю
Kozimjon
Народ, вопрос от человека, который только изучает mvp. Необходимо работать с sharedpreferences в нескольких методах в активити Как правильно: передать sharedpreferences в презентер и там с ним оперировать или же в презентере вызывать методы в активити (методы интерфейса конечно), которые будут работать с shared? Заранее спасибо
Maxim
Скорее первый вариант. Активити не должна трогать бизнес-логику
Maxim
Контекст передается в презентер в каждом методе, где он нужен, если нет какого-нибудь DI-фреймворка
Schnaps
разве презентер не должен трогать контекст?
Александр
Maxim
Презентер не должен хранить ссылку на контекст, который был передан из активити (имеется ввиду не аппликейшн контекст, а другие). Поправьте меня, если ошибаюсь
Александр
Презентер не должен хранить ссылку на контекст, который был передан из активити (имеется ввиду не аппликейшн контекст, а другие). Поправьте меня, если ошибаюсь
Ну тоже вариант, я вообще чисто из android sdk вещи в презентор не выносил, оставлял на уровне активити. Презентор дёргал у активити через контракт методы связанные с тем же контекстом.
Kozimjon
Ну тоже вариант, я вообще чисто из android sdk вещи в презентор не выносил, оставлял на уровне активити. Презентор дёргал у активити через контракт методы связанные с тем же контекстом.
я вот тоже хотел так организовать - но слишком много беготни между презентером и активити получается - поэтому подумал - может лучше передать все что нужно презентеру и пусть там он один пашет и возвращает лишь результат
Schnaps
тогда зачем вообще MVP? если беготни много? сделай все в одной активити
Schnaps
и логику и дату и вью