Aleks
То, что пришло с сервера — это что? Ответ? А не видишь что? Запрос?
Да, вижу json и заголовки которые вернул сервер.
Сергей
Хотя с телефона в таком коде не разобраться
Denis
аргументы?
вот https://www.mysoftkey.com/java/difference-between-dom-and-sax-parser-in-java/
Aleks
А в студии в logcat нет фильтров?
Фильтры отключены, пробовал на разных ПК.
Mike
вот https://www.mysoftkey.com/java/difference-between-dom-and-sax-parser-in-java/
очень плохо, когда автор не поясняет, что имел в виду) идея понятна, но я не соглашусь
Denis
очень плохо, когда автор не поясняет, что имел в виду) идея понятна, но я не соглашусь
вобще конечно спорный вопрос очень, потенциальная тема для холивора. Под Андроид лучше юзать pull parser и не париться
Дмитрий
все плохо?
Mike
все плохо?
да, потому что ты хочешь, чтобы мы знали твой проект лучше тебя и представили готовое решение
Дмитрий
Спасибо, и на этом)
roman G
Есть идеи что я не так делаю?
Denko
Там же написано что FindViewModel у тебя ее никто не провайдит, вот он и ругается
Andrey
привет кто-то использовал пагинацию от гугла? типа создается DataSource ему передаются два запроса и т д Как его отучить делать последний запрос, несмотря на то, что предыдущий вернул не полные данные?
Andrey
Как понимать кейс "когда вернул неполные данные"? Вед пагинация для этого и нужно, получать по кусочкам )
я запрашиваю порцию данных со 250 позиции, количеством 50, мне приходят 3. что поидее означает, что данные закончились, но либа все равно делает запрос 253 с лимитом 50 и получает пустой список, тогда и успокаивается
Axbor
Можно попробовать на методе loadRange проверить что позиция с которого начинается загрузка кратная к размеру порции.
Axbor
или же просто поставить переменную которая определяет всё ли загрузилось.
Axbor
если всё загрузилось то просто вызвать callback.onResult(emptyList())
Andrey
если всё загрузилось то просто вызвать callback.onResult(emptyList())
можно конечно, но что-то неохота костылить такое. смотрел другие типы DataSource - там по ключу, так что я пользуюсь явно тем, что мне подходит лучше. вдруг думал есть решение изкаробки, типа в конфиге указать флаг какой-нибудь
Andrey
ладно, буду проверять что количество данных меньше loadSize и отправлять callback.onResult(Collections.emptyList());
Andrey
нет, в таком случае последные данные не отобразятся (
а если так: callback.onResult(data); if (data.size() < params.loadSize) { callback.onResult(Collections.emptyList()); }
Andrey
ага, что-то упало(
Axbor
а если так: callback.onResult(data); if (data.size() < params.loadSize) { callback.onResult(Collections.emptyList()); }
тоже думал об этом, попробуй, по идее должно работать
Andrey
или нет )
java.lang.IllegalStateException: callback.onResult already called, cannot call again.
Andrey
придется делать флаг и проверять его
Mentor
27 вещей, которые я хотел бы знать, перед тем, как начать программировать — Разработка на vc.ru https://vc.ru/dev/82652-27-veshchey-kotorye-ya-hotel-by-znat-pered-tem-kak-nachat-programmirovat
Andrey
+
норм, вроде сработало. тчательно протестирую и отпишусь если факаблы выпадут
Kozimjon
Ребят, всем привет, подскажите пожауйста куда копать, уже 3 дня над этим сижу - под капотом mvp, kotlin, retrofit, rxjava, socket. Есть фрагмент со списком+презентер - в презентере через апи получаю список, инициализирую адаптер и передаю адаптер в фрагмент, где инициализирую recyclerView с этим адаптером. До этого момента все отлично. Далее в каждом элементе списка есть кнопка Зашифровать, при клике по которой в презентере срабатывает метод, который по сокету запускает процесс на сервере. С этим тоже все норм. Здесь же подписываюсь на событие сокета, через который получаю прогресс с сервера - вот этот прогресс мне надо вывести в тот элемент списка, в котором была нажата кнопка. Что я пробовал: 1. Пробовал через DiffUtil - тупо ничего не обновляет 2. пробовал при эмите сокета обновлять list и вызывать notifyDataSetChanged у адаптера 3. пробовал слушать эмит сокета внутри самого адаптера и еще много чего -но все выбрасывает с ошибкой о том, что другие потоки не могут изменять элементы ui потока и другие ошибки Если знаете какой пример хотя бы похожий - подскажите а, уже устал гуглить, заранее спасибо
Dmitrii
Преобразовать 00001 в int, приплюсовать 1, отформатировать в строку формата 00000х
Спасибо, получилось, но теперь другая проблема, с 0001 по 0009 все понятно и просто, но с 10 будет уже не верно, а именно 00010, а должно быть 0010, или я не правильно формат строки написал?
Kozimjon
Ребят, всем привет, подскажите пожауйста куда копать, уже 3 дня над этим сижу - под капотом mvp, kotlin, retrofit, rxjava, socket. Есть фрагмент со списком+презентер - в презентере через апи получаю список, инициализирую адаптер и передаю адаптер в фрагмент, где инициализирую recyclerView с этим адаптером. До этого момента все отлично. Далее в каждом элементе списка есть кнопка Зашифровать, при клике по которой в презентере срабатывает метод, который по сокету запускает процесс на сервере. С этим тоже все норм. Здесь же подписываюсь на событие сокета, через который получаю прогресс с сервера - вот этот прогресс мне надо вывести в тот элемент списка, в котором была нажата кнопка. Что я пробовал: 1. Пробовал через DiffUtil - тупо ничего не обновляет 2. пробовал при эмите сокета обновлять list и вызывать notifyDataSetChanged у адаптера 3. пробовал слушать эмит сокета внутри самого адаптера и еще много чего -но все выбрасывает с ошибкой о том, что другие потоки не могут изменять элементы ui потока и другие ошибки Если знаете какой пример хотя бы похожий - подскажите а, уже устал гуглить, заранее спасибо
в презентере: красное - запускаю процесс на сервере (все отлично тут), синее - слушаю событие сокета, прогресс в лог выводится, но вот обновлять список не получается
Ivan
Ребят, всем привет, подскажите пожауйста куда копать, уже 3 дня над этим сижу - под капотом mvp, kotlin, retrofit, rxjava, socket. Есть фрагмент со списком+презентер - в презентере через апи получаю список, инициализирую адаптер и передаю адаптер в фрагмент, где инициализирую recyclerView с этим адаптером. До этого момента все отлично. Далее в каждом элементе списка есть кнопка Зашифровать, при клике по которой в презентере срабатывает метод, который по сокету запускает процесс на сервере. С этим тоже все норм. Здесь же подписываюсь на событие сокета, через который получаю прогресс с сервера - вот этот прогресс мне надо вывести в тот элемент списка, в котором была нажата кнопка. Что я пробовал: 1. Пробовал через DiffUtil - тупо ничего не обновляет 2. пробовал при эмите сокета обновлять list и вызывать notifyDataSetChanged у адаптера 3. пробовал слушать эмит сокета внутри самого адаптера и еще много чего -но все выбрасывает с ошибкой о том, что другие потоки не могут изменять элементы ui потока и другие ошибки Если знаете какой пример хотя бы похожий - подскажите а, уже устал гуглить, заранее спасибо
notifyItemChanged(index, payload)
Ivan
затем обнавляешь в onBindViewHolder() который с payloads
Ivan
само собой когда приходит ответ с сервера о прогрессе надо знать какой элемент списка тебе надо обновить
Kozimjon
само собой когда приходит ответ с сервера о прогрессе надо знать какой элемент списка тебе надо обновить
мне известно только его id, но не индекс - но из list, который я получил с сервера могу узнать его индекс?
Ivan
если ты знаешь его идентификатор, то по нему ты можешь найти его в списке и таким образом узнать индекс
Ivan
payload это просто новая инфа типа Any, не обязательно объект списка
Kozimjon
payload это просто новая инфа типа Any, не обязательно объект списка
именно это и хотел спросить ща - вот уже пробую
Anonymous
Ребята, а кто-нибудь писал диссертацию научную и чтобы в ней типо было использование android или IOS , ну и в сочетании с умными алгоритмами (ML+DeepLearning) ?
Anonymous
Ну, где мне найти такую крутую диссертацию, чтобы сделать также и лучше ?
Vladislav
Всем привет! такая проблема с форграунд серивсом образовалась. если экран горит, то он работает. если выключаешь экран, то он заспыает, и проосыпается может каждые минут 10. я сделал чтобы уведомление сверху висело - ничего не работает. что еще можно сделать чтобы при блокировке все равно работало?
Сергей
Formatting Numeric Print Output (The Java™ Tutorials > Learning the Java Language > Numbers and Strings) https://docs.oracle.com/javase/tutorial/java/data/numberformat.html
Dmitrii
https://t.me/android_ru/584668
Извиняюсь! Спасибо, уже решил (currentNumber.plus(1)).toString().padStart(5, ‘0’)
Сергей
Ну можно и так. Для отрицательных правда это даст забавный результат, но у нас их не будет
Kozimjon
payload это просто новая инфа типа Any, не обязательно объект списка
можешь взглянуть? это адаптер - помоему тут все норм, ща кину презентер
Kozimjon
payload это просто новая инфа типа Any, не обязательно объект списка
это вот презентер - короче не могу запускаться в ui потоке - вся проблема в этом помоему
Ivan
ну да, потому что в сокетах там явно все не в главном потоке работает. Я так понимаю ты никакие корутины не используешь, что похорошему надо бы было и вся эта логика тоже не в презентере должна быть конечно. В таком случае вижу здесь только Handler(Looper.getMainLooper()).post { notifyItemChanged }
Ivan
ну или в презентре п-любому должна быть ссылка на активити контекст и тогда activity.runOnUiThread { notify() }
Kozimjon
ну или в презентре п-любому должна быть ссылка на активити контекст и тогда activity.runOnUiThread { notify() }
ща это попробую. чтобы только сейчас это заработало. ну а потом начну с корутин, с ними я никак еще не встречался. А вот вся эту логику куда надо вывести?
Ivan
ну по идее это надо углубляться в чистую архитектуры, смотря по твоему опыту это все конечно
Ivan
удачи
Kirill
Подскажите, как бороться с проблемой, если в intent.getStringExtra(CHAT_MSG) приходит что-то что не подходит в enum MessageOwner? messageItem.setIsYou(MessageOwner.valueOf(intent.getStringExtra(CHAT_MSG).toUpperCase())); public enum MessageOwner{ @SerializedName("clnt") USER, @SerializedName("admin") SERVER }
alex
alex
Посоветуйте как сделать такой слайдер?
alex
Чтобы при клике фулскрин раскрылся
alex
alex
Поищем
Ivan
Чтобы при клике фулскрин раскрылся
ViewPager +activity transition или fragment transition
Denis
ViewPager +activity transition или fragment transition
что-то жестко использовать fragment, чтобы отобразить фоточку. Проще же recycler
Kirill
RecyclerView горизонтальный или ViewPager, вешай на него клик, по клику открывай окно/фрагмент, в нем так же ViewPager или RecyclerView
Ivan
что-то жестко использовать fragment, чтобы отобразить фоточку. Проще же recycler
Ресайклеру нормальный пейджинг делать заморочно. Потому проще view pager. Можно view pager 2, но он ещё в бэте
alex
С другой стороны наверное если фотка и доп кнопки на фулскрине то без фрагмента никак
Denis
и не будет проблем
Kirill
С другой стороны наверное если фотка и доп кнопки на фулскрине то без фрагмента никак
как по мне, если разделить, то меньше геморроя и окно читабелнее
Denis
реализация проще получается. Возможностей для оптимизации тоже больше