𝙈𝙖𝙠𝙨𝙤𝙣𝙞𝙘 🇷🇺
Александр
Чисто в теории, можно попробовать что - то типо: window.statusBarColor = Color.TRANSPARENT
.
Всем привет) у меня есть сплошной cardview, как мне встроить в него выделенные элементы на втором скриншоте?
думаю что там два варика: 1) это LinearLayoutManager, каждый вьюхолдер обернут в CardView, но чёт элементов на каждую карточку дофига, долго будет строится 2) это GridLayoutManager достаточно сложный с декорациями и вьюхолдеры в нём с различным спаном
.
я бы делал по второму пути, он хоть и более замороченный но правильнее
.
и вот эти тени типа переход с одной карточки в другую чисто бутафория
𝙈𝙖𝙠𝙨𝙤𝙣𝙞𝙘 🇷🇺
тоесть это просто тень наложна на карточки да?
Сергей
Я делал но не помню точно как. Тулбар это отдельный же объект. Его создают, настраивают, а потом фигачат getSupport, не
𝙈𝙖𝙠𝙨𝙤𝙣𝙞𝙘 🇷🇺
я думал эта тень элемент типа View разделитель
.
не, тень это типа нижняя и верхняя тени и это декорация, гуглани RecyclerView.ItemDecoration
Nazar
Подскажите пожалуйста, как в ViewPager'е выключить эффект типо ripple или что это, когда свайпаеш ?
.
Nested recycled views,
имхо извращение, но на вкус и цвет...
.
конечно если надо свайпать и по вертикали и по горизонтали нет вопросоВ, но по-моему скриншот этого не подразумевает
Evgeniy
Как разрешить базе данных работать в ui потоке?
.
никак и забыть эту идею как страшный сон
𝙈𝙖𝙠𝙨𝙤𝙣𝙞𝙘 🇷🇺
имхо извращение, но на вкус и цвет...
ну хорошо) я тенью я понял что, а текст как? я хочу что бы после двух строк карточек был текст потом снова карточки и.т.д как его внедрить?
.
viewType закури в адаптере
Александр
Как разрешить базе данных работать в ui потоке?
Если речь про Room, то ответ гуглится в два счёта. https://www.google.com/search?q=room+into+main+thread+android&oq=room+into+main+thread+android&aqs=chrome..69i57.6367j0j7&sourceid=chrome&ie=UTF-8
⬤ vitaly
Дыа
"Вот это" просто пишет, что не может найти класс (который не сгенерило, потому что ошибка в xmlине)
Сергей
Там же про app bar спрашивали. Или это я затупил, и app bar != statusBar?
Статус бар это где батарея и микроиконки Акшн бар это где заголовок и стрелочка назад, и меню А тулбар полноценный лэйаут куда можно чего угодно напихать и сказать системе исп.его вместо акшн
𝙈𝙖𝙠𝙨𝙤𝙣𝙞𝙘 🇷🇺
viewType закури в адаптере
спасибо) всё понял
Александр
"Вот это" просто пишет, что не может найти класс (который не сгенерило, потому что ошибка в xmlине)
Я понимаю эту боль =( Хз, мне иногда помогает ToogleView, чаще всего нет конечно.
.
э пацаны вы зачем в уи потоке с бд возитесь ау
Александр
а что это? А где это?)
Я скидывал скрин выше, когда на твой вопрос отвечал.
.
О_О я чёто не понимаю или это жоский говнокод
⬤ vitaly
а то задолбалось комментить код и раскоменчивать по одной вьюхе чтобы понять, где я долбанную буковку не дописал)
Александр
а то задолбалось комментить код и раскоменчивать по одной вьюхе чтобы понять, где я долбанную буковку не дописал)
Я именно так и действую сейчас :D Если кто подскажет более дельный метод, будет плюс в карму.
Александр
Мб поможет вот это, когда билд в очередной раз не соберётся
Александр
vitaly
⬤ vitaly
да врубаю я эту штуку, врубаю...
Chriz
viewType закури в адаптере
отдельный viewType для Decoration для тебя не извращение ? :D Если иметь Nested RecyclerViews в родительском будут 2 вьютайпа, и в дочерних по 1. С точки зрения кода будет чистенько
Сергей
э пацаны вы зачем в уи потоке с бд возитесь ау
Потому что можем. Делов то. Если база не на 100500 строк, то поиск по ней миллисекунды занимает
⬤ vitaly
просто я думал, где-то должна конкретная ошибка быть типа "у вас тут не найдена переменная severName"
.
ну не 2, но да
⬤ vitaly
А как у уи потока вообще можно возиться с бд, ежело оно эксепшан кидает?)
Chriz
ну не 2, но да
Как это не 2 ? =) на скрине я вижу 2
Сергей
сложно наверное еще 2 строчки под асинхрон написать да ?
Ну, на стадии прототипа и отладки можно обойтись. Но в прод такое позор конечно
Александр
Сергей
А как у уи потока вообще можно возиться с бд, ежело оно эксепшан кидает?)
У room это отключается одной строкой. А просто sqlite вообще пох
.
это всё равно колхоз как по мне
Chriz
AsyncTask.execute { } ?
мы про viewTypes
Александр
Student
Всем привет. Адресую разработчикам с опытом в rxjava Описание ситуации: Авторизация на сервере у нас с двумя токенами. В случае 401 я должен запустить логику по обновлению ACCESS_TOKEN с помощью REFRESH_TOKEN (openid authentication вроде бы это правильно называется). В сеть лазаю с помощью ретрофита в связке с rxjava2. Примерно так: @GET("api/v1/drivers/current") fun getCurrentDriver(): Single<DriverData> Методы для вылазки в сеть возвращают либо Single, либо Completable. Идея такова, что я хочу написать одну цепочку по обновлению токенов, и в случае 401 приклеить её к каждому методу-запросу в сеть Подскажите, пожалуйста, как правильнее это сделать и вообще правильная ли задумка. Сейчас в случае 401 ошибки я в интерцепторе пораждаю кастомное исключение, которое обрабатываю в onError каждого похода в сеть. Вызываю метод по обновлению токенов, который должен возвращать Boolean. И в случае успешного обновления внутри OnError запускаю рекурсивно этот же метод. Мало того, что это выглядит не очень, так еще и для того, что бы реактивный метод по обновлению токенов возвращал Boolean приходится блокировать поток с помощью оператора blockingGet Буду рад советам. Спасибо заранее.
.
кто знает, в AAR пропреитарном можно как-то пекедж один заменить? Засратая зебра (принтеры для этикеток и сканеры для штрихкодов) упорно не желает выкладывать исходники или перехдить на AndroidX. Или может есть какая-то маза для автомиграции
.
Всем привет. Адресую разработчикам с опытом в rxjava Описание ситуации: Авторизация на сервере у нас с двумя токенами. В случае 401 я должен запустить логику по обновлению ACCESS_TOKEN с помощью REFRESH_TOKEN (openid authentication вроде бы это правильно называется). В сеть лазаю с помощью ретрофита в связке с rxjava2. Примерно так: @GET("api/v1/drivers/current") fun getCurrentDriver(): Single<DriverData> Методы для вылазки в сеть возвращают либо Single, либо Completable. Идея такова, что я хочу написать одну цепочку по обновлению токенов, и в случае 401 приклеить её к каждому методу-запросу в сеть Подскажите, пожалуйста, как правильнее это сделать и вообще правильная ли задумка. Сейчас в случае 401 ошибки я в интерцепторе пораждаю кастомное исключение, которое обрабатываю в onError каждого похода в сеть. Вызываю метод по обновлению токенов, который должен возвращать Boolean. И в случае успешного обновления внутри OnError запускаю рекурсивно этот же метод. Мало того, что это выглядит не очень, так еще и для того, что бы реактивный метод по обновлению токенов возвращал Boolean приходится блокировать поток с помощью оператора blockingGet Буду рад советам. Спасибо заранее.
сделал именно это не так давно. у тебя какая архитектура примерно?
Алексей
Всем привет. Адресую разработчикам с опытом в rxjava Описание ситуации: Авторизация на сервере у нас с двумя токенами. В случае 401 я должен запустить логику по обновлению ACCESS_TOKEN с помощью REFRESH_TOKEN (openid authentication вроде бы это правильно называется). В сеть лазаю с помощью ретрофита в связке с rxjava2. Примерно так: @GET("api/v1/drivers/current") fun getCurrentDriver(): Single<DriverData> Методы для вылазки в сеть возвращают либо Single, либо Completable. Идея такова, что я хочу написать одну цепочку по обновлению токенов, и в случае 401 приклеить её к каждому методу-запросу в сеть Подскажите, пожалуйста, как правильнее это сделать и вообще правильная ли задумка. Сейчас в случае 401 ошибки я в интерцепторе пораждаю кастомное исключение, которое обрабатываю в onError каждого похода в сеть. Вызываю метод по обновлению токенов, который должен возвращать Boolean. И в случае успешного обновления внутри OnError запускаю рекурсивно этот же метод. Мало того, что это выглядит не очень, так еще и для того, что бы реактивный метод по обновлению токенов возвращал Boolean приходится блокировать поток с помощью оператора blockingGet Буду рад советам. Спасибо заранее.
Сделайте interceptor нормальный, зачем костыли городить?
.
moxy юзаешь?
Алексей
На уровне okhttp, еще до реактивнищы всей
Student
Сделайте interceptor нормальный, зачем костыли городить?
ну в него нельзя заинжектить router от чичероне и инетрактор целый. пробовал
.
щас скину тебе на гист примерный код в двух штуках
Student
слишком тяжеловесные объекты, наверное. я пробовал. не получалось
Алексей
слишком тяжеловесные объекты, наверное. я пробовал. не получалось
https://github.com/AndroidArchitecture/AndroidArchitectureBook/blob/master/cases/auth/Auth_article.md Гляньте тут идею.
Student
и как я сделаю перезапрос запроса (сорян за тафтологию) при успешном обновлении токена
Student
а, да
Алексей
И DI не важно, кто тяжеловесный, а кто нет)
Student
еще туда и account manager нужно инжектить
Student
так что проблемы были
Student
не получилось
.
Денис https://gist.github.com/ioerrorle/8ed4599f24abf295f6eb8c9192ff5c25
Алексей
и как я сделаю перезапрос запроса (сорян за тафтологию) при успешном обновлении токена
В interceptor у вас для этого всё есть, оригинальный request переотправите после обновления токена. Вы на то и разработчик, чтобы решать проблемы, когда не получается)
Student
ну вот пытаюсь решить)
.
спасибо
там есть ещё тонкий момент я конечно накостылил в своё время, мне очень хотелось чтобы поворялись все запросы, но только один рефреш
.
Денис https://gist.github.com/ioerrorle/2c54a9af972214b5055493d7abea7ba3
Student
😂
Student
👍
Алексей
Javadoc вам в помощь)
Ihor
Так а в чём конкретно проблема тогда? Получение по аналогии с отправкой.
Ну вот вроде получение должно так работать: apiService.postInit(versionName, applicationId) .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .unsubscribeOn(Schedulers.io()) .subscribe(new Subscriber<InitPost>() { @Override public void onSubscribe(Subscription s) { } @Override public void onNext(InitPost initPost) { } @Override public void onError(Throwable t) { } @Override public void onComplete() { } }); } А у меня после пост сабскрайб не подкидывает (