ͬ̾ ́̚ ͧ̀҉͏͜ ̄ͩ ̱̬ ͧͩ Нармальный Чел Σ 🇳🇴
И смотреть статистику
да это будет полезно спасибо
ͬ̾ ́̚ ͧ̀҉͏͜ ̄ͩ ̱̬ ͧͩ Нармальный Чел Σ 🇳🇴
Denys
Всем привет. Такой вопрос. Есть массив обьектов, некоторые из них уже готовы для отображения а некоторые надо догрузить. Хочу показать список с готовыми обьектами а потом уже добавлять к ним те которые догрузились. Как это сделать с помощью LiveData и корутин?
Запихивать в ливдату готовые объекты, показывать их. Догружать неготовые, например: launch { val data = async(loadMore()) addToLiveData(data.await()) } А по хорошему - вынести загрузку куда-то в репозиторий.
Alexander
Запихивать в ливдату готовые объекты, показывать их. Догружать неготовые, например: launch { val data = async(loadMore()) addToLiveData(data.await()) } А по хорошему - вынести загрузку куда-то в репозиторий.
Спасибо, но яснее не стало. У меня приходит из репозитория массив обьектов с атрибутами в обычной мапе. Я прохожу по этому массиву и если в мапе есть нужные атрибуты то отображаю, а если нет то хочу грузить асинхронно, а когда они догрузятся добавить к отображаемым.
Vadim
Помогите решить проблему с форматированием цены. Есть такой кусок кода, и он работает прекрасно private val format: DecimalFormat = NumberFormat.getCurrencyInstance(Locale.getDefault()) as DecimalFormat fun format(amount: Double, currencyCode: String): String { val symbol = Currency.getInstance(currencyCode).getSymbol(Locale.getDefault()) format.positivePrefix = "$symbol " return format.format(amount) } И есть такой тест: @Test fun testUSDAmount() { val result = formatter.format(123.44, "USD") assertTrue(result == "$ 123.44") } но когда пытаюсь его протестировать, вместо $ 123.44 я получаю USD 123.44. Хотя на эмуляторе код работает
Alexander
В чем именно возникают трудности?
Я не понимаю как это сделать с LiveData. Или может мне возвращать список с LiveData-ми для каждого отдельного элемента? И ещё хотелось бы показывать прогресс бары. Просто ещё не очень хорошо с ними разобрался. Может есть где то пример похожего кейса.
Vadim
Locale.getDefault() возвращает en_GB
iamthevoid
Можно записать currentTimeMillis в билд константы в gradle, а потом просто обращаться к ней
iamthevoid
От себя советую записывать в long миллисы, потому видел что java.util.Date вела себя неадекватно, на релизном билде писалась в Date, на дебаг в миллисы
Who
народ, привет) есть такая задача: в активити нужно отслеживать, когда телефон юзера будет возле определенной геоточки. Как порекомендуете это делать? Желательно, чтобы и в фоне это тоже работало
Who
то есть нужно использовать что-то вроде сервиса, который по кд берет координату устройства и сравнивает с нужной?
Who
правильно розумию?
Алексей
правильно розумию?
про geofencing почитайте
FreeUser
Всём привет) ещё раз никто не в курсе можно ли как-то из app bundle(*. aab) андроид манифест в его исходный вид конвертнуть?
Who
про geofencing почитайте
большое спасибо, полез искать)
Denys
Я не понимаю как это сделать с LiveData. Или может мне возвращать список с LiveData-ми для каждого отдельного элемента? И ещё хотелось бы показывать прогресс бары. Просто ещё не очень хорошо с ними разобрался. Может есть где то пример похожего кейса.
Где-то (например в ViewModel) лежит LiveData с данными. private val _data = MutableLiveData<List<Item>>() val data: LiveData<List<Item>> = _data Где-то поближе к view вы на нее подписываетесь и отображаете данные. viewModel.data.observe(...)
Denys
"Обсервить в" - неверный оборот. :)
Denys
Можно Observe smth., тоесть подписываться на изменения данных.
Denys
https://developer.android.com/topic/libraries/architecture/livedata#observe_livedata_objects
Alexander
"Обсервить в" - неверный оборот. :)
Ну тоесть каждый раз обнавлять данные в LiveData?
Alexander
"Обсервить в" - неверный оборот. :)
И получается во вьюшке каждый раз будет вызываться Observe и Recycler каждый раз будет высчитывать разницу между тем что в адаптере и тем что пришло. Не будет ли это как то сказываться на анимации или производительности?
Denys
Да, если вы используете Room - он умеет возвращать LiveData по запросу.
Denys
Рекомендую посмотреть вот тут: https://codelabs.developers.google.com/codelabs/android-training-livedata-viewmodel/index.html
Denys
Шаг 4 - Использование LiveData
Denys
Хорошо, понятно. Спасибо большое!
А после можно и кодлаб по корутинах глянуть. :)
Alex
Ребята , можно можно ли manifest разделить по api version. Те что бы для 21 и 21< api были разные файлы?
Alex
Flavour
как вариант. спасибо
Serhii
привет, чуваки, подскажите по rx в контексте андроид есть три запроса, отдают Observable надо выполнить первый, получить результат и запустить остальные запросы паралельно, передав результат с первого, затем обработать результат каждого как это сделать?
Alex
зачем? визуальный или практический профит?
для того что бы убрать инициализацию для api <21 <provider android:name=".Camera2Initializer" android:authorities="${applicationId}.camerax-init" android:exported="false" android:initOrder="100" android:multiprocess="true" />
Serhii
окей, спасибо
Konstantin
#тупойвопрос можно ли наполнять стек фрагментов не по порядку, а подсовывая в стек в середину фрагменты? так чтобы один фрагмент был всегда наверху (типа загрузочный фрагмент), а остальные "подпихивать под него" для образования "истории" ?
Никита 🙃
Мб кто-то сталкивался. Есть проект с модульной архитектурой, где каждый модуль находится на артифактори, в разных репозиториях. (GitLab) Хотим настроить CI/CD и возник вопрос тестов. Можно ли как то заставить прогонять тесты конкретных модулей из основного репозитория?
Сергій
Не зря же он называется Stack 😁
Konstantin
Не зря же он называется Stack 😁
не ну это понятно, можно типа его реплейсить целиком, 1 потом 2 потом 3 например фрагмента внутри транзакции
Konstantin
но будет ли "моргать" верхний фрагмент? если его реплейсить в контейнере на самого себя
Ruslan
подскажите, что делаю не так. Получаю преференсы, регистрирую им слушателя - все ок. Если создаю вот такой класс - слушатель не реагирует на изменения префов. Логи пустые вообще. public class PrefListener { private final Map<String, Consumer<String>> stringListeners = new HashMap<>(); private final String DEFAULT_STRING = ""; public PrefListener(SharedPreferences preferences) { preferences.registerOnSharedPreferenceChangeListener((sp, key) -> { Log.d("PrefObserver", "PrefObserver: " + key); Consumer<String> listener = stringListeners.get(key); if (listener!= null){ String s = sp.getString(key, DEFAULT_STRING); listener.accept(s); } }); } public void addStringListener(String key, Consumer<String> listener){ stringListeners.put(key, listener); } }
Ruslan
дебаг
не заходит даже в слушателя этого
Евгений
val preferences = PreferenceManager.getDefaultSharedPreferences(context)
Ruslan
А, блин. Там же WeakReference долбаный. Надо явно держать лямбду.
спасибо, очень выручил! всего-то надо было в доки глянуть
Сергей
Полуархитектурный вопрос. Имеем класс, реализующий некоторую запись(условно - дата время событие). В нескольких модулях приложения хранятся локальные списки таких записей. Надо реализовать выгрузку списка в сериализованные байты, потом эти байты в (шифрованную) строку. Как в плане разбивки по модулям и классам присунуть методы выгрузки /загрузки? Создать класс в котором сидит arrayList этих записей и туда засунуть методы по сериализации/шифрованию списка?
Serg
я хренею, в студии собновлениями поломка с индексациями. Реально usage метода не все находит студия 3.4.1 и кого еще так?
Serg
наводишь на метод и ctr
Serg
или ctr alt f7
Serg
все это глючит
Serg
как работать))
Nikita
я хренею, в студии собновлениями поломка с индексациями. Реально usage метода не все находит студия 3.4.1 и кого еще так?
у меня в phpstorm такая ж фигня, поиск работает странно: нужно ввести (ничего не найдет), удалить, набрать поисковый запрос еще раз - находит
Dmitry
Всем привет, кто-нибудь Google Tag Manager с Firebase использует?
Dyno
будет искать по всему модулю, еще можно по конкретной директории искать
Сергей
А на 3.4 откатиться?
trashkalmar
я в 3.5 последней бете проблем не испытываю
Сергей
Да, или вперед
trashkalmar
ну разве что кроме невыносимой тупизны ввода текста, когда в довольно большом классе есть синтаксическая ошибка, и ты о ней знаешь
Serg
я в 3.5 последней бете проблем не испытываю
просто оно то может находить usage, а может находить но не все
Vlad
Привет. Геолокация на Xiaomi не работает. Кто сталкивался уже? Что почитать?
trashkalmar
просто оно то может находить usage, а может находить но не все
Да, была такая проблема в 3.4, оказалось неприятным сюрпризом, когда я интенсивный рефакторинг проводил. В 3.5 не сталкивался ни разу
Anonymous
Здравствуйте. Подскажите, пожалуйста, есть ли способ редактирования кода приложения с телефона и создания апк-файлов? Если да, то какой?
Dyno
был на докладе как-то, там рассказывали об инструменте, который позволяет подробно посмотреть когда приложение выходило в сеть, сколько оно потребило батареи, вроде даже озу и цпу. Есть догадки что это мог быть за интструмент? Сейчас был бы мне очень кстати
Sergey
крашалитикс?
Dyno
крашалитикс?
ну оно не только по твоему приложению показывает, а по всем
Dyno
вроде это было средствами android studio
Sergey
profiler?
Dyno
profiler?
профайлер же только позволяет посмотреть о своем приложении.
Dyno
ладно, какие есть средства посмотреть когда другое приложение выходило в сеть?