roman G
Ребят, можете привести жизненный пример использования паттерна абстрактная фабрика в контексте андроид разработки
Pavel
Кинь код пожалуйста
https://gist.github.com/pavel-vasilev/0f0907bf7502adeb4c1bff0cfb874028
Konstantin
это в какой-то секции или просто в файле билда?
Kanstantsin
Просто не пойму тогда зачем AppCompat нужен ?
Kanstantsin
Подскажите, есть ли какая-то разница между activity FragmentActivity из фреймворка(AndroidX) и AppCompatActivity из androidx.appcompat:appcompat:1.0.0, я сейчас порылся пока вроде особо никакох разницы между ними нету
Pavel
Konstantin
top level <- сразу после плагинов
а, походу дело было в том что я не там пишу
Anonymous
Люди, кто нибудь
Mike
Это что вобоще такое, откуда <item> в теге <vector>?
Anonymous
Это внутри либы было
Mike
Люди, кто нибудь
срочно-срочно, завтра проект сдавать! Помогите же кто-нибудь!
Anonymous
https://github.com/aurelhubert/ahbottomnavigation/blob/master/README.md
Mike
https://github.com/aurelhubert/ahbottomnavigation/blob/master/README.md
там не так https://github.com/aurelhubert/ahbottomnavigation/blob/master/ahbottomnavigation/src/main/res/drawable-v21/item_background.xml
Anonymous
Это внутри самой либы
Mike
Это внутри самой либы
Ещё раз, внутри либы нет <vector>, у которых были бы <item> внутри
Anonymous
Ну, я это точно не писал
Mike
лол)
Gromozeka
я хотел использовать, getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container, new DachaListFragment()).commit(); но это дает ошибку
Правильно он тебе ошибку выдает, потому что у тебя класс DachaListFragment это не фрагмент а активити
Jamal
всем добрый день! у меня такой вопрос, если не сложно, подскажите: Я имею viewPager как сделать так ято бы он не запускал автоматом соседние фрагменты?
Kanstantsin
но я не уверен что можно меньше 3
Mike
Как это должно работать? Притормаживать при свайпе, строить UI на глазах?)
Akim
В инсте разве нативный клиент?
В инсте реакт-нэйтив
Alexey
В инсте реакт-нэйтив
Ну значит я там выше угадал
Dmytro
В инсте реакт-нэйтив
ну не весь же, вроде пару экранов только
Vladislav
Подскажите, как правильнее сделать. Имеется подобие MVP, во вью (фрагмент) находится RecyclerView, во ViewHolder имеется несколько неизменяемых ImageView и TextView (они никогда не меняются) и один TextView, текст которого должен часто меняться в рантайме. RV-адаптер получает данные через интерфейс у родительского вью (фрагмент), который сам вызывает нужные методы презентера (то есть адаптер сам не хранит список данных). Презентер уже достает данные из модели. В презентер раз в несколько секунд асинхронно постоянно приходят новые данные, которые нужно помещать в изменяемый TextView у ViewHolder'ов. Для разных ViewHolder разные данные. Сейчас я сделал так, что когда приходят новые данные, то презентер передает во вью индекс элемента и там уже вызывается notifyItemChanged(). Но это приводит к обновлению всего ViewHolder и заметна анимация изменения (при обновление элемент мигает: исчезает и появляется), хотя нужно поменять значение только у одного TextView. Возможно ли при такой схеме обновлять только конкретный TextView у конкретного ViewHolder без его полного обновления, либо хотя бы без моргающей анимации? Или надо перепиливать схему взаимодействия классов?
Andrei
Привет, с камеры записать байты изображения в файл можно быстро с помощью extras интента - через MediaStore.EXTRA_OUTPUT. Можно ли таким же образом получить байты файла, получаемого через Intent.ACTION_PICK ? Выбираю тоже изображения.
Akim
ну не весь же, вроде пару экранов только
Как вы себе это представляете?
Akim
Подскажите, как правильнее сделать. Имеется подобие MVP, во вью (фрагмент) находится RecyclerView, во ViewHolder имеется несколько неизменяемых ImageView и TextView (они никогда не меняются) и один TextView, текст которого должен часто меняться в рантайме. RV-адаптер получает данные через интерфейс у родительского вью (фрагмент), который сам вызывает нужные методы презентера (то есть адаптер сам не хранит список данных). Презентер уже достает данные из модели. В презентер раз в несколько секунд асинхронно постоянно приходят новые данные, которые нужно помещать в изменяемый TextView у ViewHolder'ов. Для разных ViewHolder разные данные. Сейчас я сделал так, что когда приходят новые данные, то презентер передает во вью индекс элемента и там уже вызывается notifyItemChanged(). Но это приводит к обновлению всего ViewHolder и заметна анимация изменения (при обновление элемент мигает: исчезает и появляется), хотя нужно поменять значение только у одного TextView. Возможно ли при такой схеме обновлять только конкретный TextView у конкретного ViewHolder без его полного обновления, либо хотя бы без моргающей анимации? Или надо перепиливать схему взаимодействия классов?
Можно костыльнуть и убрать анимацию, например
Alexey
Подскажите, как правильнее сделать. Имеется подобие MVP, во вью (фрагмент) находится RecyclerView, во ViewHolder имеется несколько неизменяемых ImageView и TextView (они никогда не меняются) и один TextView, текст которого должен часто меняться в рантайме. RV-адаптер получает данные через интерфейс у родительского вью (фрагмент), который сам вызывает нужные методы презентера (то есть адаптер сам не хранит список данных). Презентер уже достает данные из модели. В презентер раз в несколько секунд асинхронно постоянно приходят новые данные, которые нужно помещать в изменяемый TextView у ViewHolder'ов. Для разных ViewHolder разные данные. Сейчас я сделал так, что когда приходят новые данные, то презентер передает во вью индекс элемента и там уже вызывается notifyItemChanged(). Но это приводит к обновлению всего ViewHolder и заметна анимация изменения (при обновление элемент мигает: исчезает и появляется), хотя нужно поменять значение только у одного TextView. Возможно ли при такой схеме обновлять только конкретный TextView у конкретного ViewHolder без его полного обновления, либо хотя бы без моргающей анимации? Или надо перепиливать схему взаимодействия классов?
Подписываешь viewholder во время биндинга на листенер, когда анбиндинг отписываешь. Прокидываешь из презентера в адаптер событие.
Alexey
onViewDetachedFromWindow В рекуклере для отписки
Pavel
Подскажите, как правильнее сделать. Имеется подобие MVP, во вью (фрагмент) находится RecyclerView, во ViewHolder имеется несколько неизменяемых ImageView и TextView (они никогда не меняются) и один TextView, текст которого должен часто меняться в рантайме. RV-адаптер получает данные через интерфейс у родительского вью (фрагмент), который сам вызывает нужные методы презентера (то есть адаптер сам не хранит список данных). Презентер уже достает данные из модели. В презентер раз в несколько секунд асинхронно постоянно приходят новые данные, которые нужно помещать в изменяемый TextView у ViewHolder'ов. Для разных ViewHolder разные данные. Сейчас я сделал так, что когда приходят новые данные, то презентер передает во вью индекс элемента и там уже вызывается notifyItemChanged(). Но это приводит к обновлению всего ViewHolder и заметна анимация изменения (при обновление элемент мигает: исчезает и появляется), хотя нужно поменять значение только у одного TextView. Возможно ли при такой схеме обновлять только конкретный TextView у конкретного ViewHolder без его полного обновления, либо хотя бы без моргающей анимации? Или надо перепиливать схему взаимодействия классов?
Почитай про payload в onBindViewHolder
Martynenko
Всем привет. Не могу понять одну вещь. Сделал custom view наследованый от framelayout, внутри компонент textureview(для вывода изображения с камеры). Как задать значение высоты и ширины у дочернего элемента чтобы оно могло быть больше чем у родителя?(надо чтобы часть картинки отсекалась и экран был вписан в preview) пытаюсь вызвать у дочернего элемента child view.measure но он игнорирует атрибут unspecified
Vladislav
Почитай про payload в onBindViewHolder
Спасибо, похоже это то, что нужно!
Денис
Всем привет проверьте мое VC плиз.
Andrey
BREAKING! Canary 1 of Android Studio 3.5 introduces a preview of Apply Changes, which replaces Instant Run. https://androidstudio.googleblog.com/2019/01/android-studio-35-canary-1-available.html
Andreu
Всем привет! Есть фрагмент. К нему привязан ViewModel, в котором я получаю данные из Room DB. Во фрагменте я отслеживаю изменения. Но мне нужно как-то передавать параметр во ViewModel. Я сделал через ViewModelFactory. Но что, если мне нужно динамически менять параметр?
Andreu
Может кто-нибудь помочь?)
Vladislav
Может кто-нибудь помочь?)
Добрый день. Вы обращаетесь к БД через метод ViewModel, который вызывается во фрагменте?
Andreu
Andreu
это во фрагменте
Andreu
а в класcе ViewModel я уже обращаюсь к бд
Andreu
Andreu
Да, у меня DatePickerDialog
Vladislav
Можете сделать setter для параметра.
Gromozeka
Можете сделать setter для параметра.
+ в фрагменте есть доступ к вьюмодели, оттуда меняете
Vladislav
годные грабли
Метко бьют?
Mike
Метко бьют?
Не знаю, я даже на ViewModel не наступал. Но выглядит как та же проблема, что и с передачей во фрагмент.
Gromozeka
годные грабли
ну мутабельность это плохо, да, а какой вариант предложишь?
Mike
ну мутабельность это плохо, да, а какой вариант предложишь?
мутабельность — это естественно и неизбежно, а вот налл поинтеры — грустно
Vladislav
А вообще, я не очень понимаю, почему данные извлекаются в конструкторе.
Vladislav
В смысле, только в конструкторе.
Kanstantsin
а почему не сделать просто передачу параметра нужного в метод viewModel
Kanstantsin
и там же запрос с ним
Mike
Гм, а зачем application?
Kanstantsin
зачем вообще конструктор нагружать сразу базой
Kanstantsin
обычно вообще конструктор без логики работы с бд у меня, логика запросов к бд уже в методах дальше, и обычно она выносится ещё в repository, чтобы общие штуки вынести и из разных ViewModel их дергать
Вячеслав
Всем привет, может кто нить что нить сказать по курсу - https://stepik.org/course/4792/syllabus?
Kanstantsin
понял, ну вообще тогда странно что такому учат, сразу вот и проблемы нарисовались )
Kanstantsin
с другой стороны может как раз хотят чтобы решали такие проблемы сами, и опыт придет тогда
Andreu
Сеттер , кстати, не работает
Vladislav
Сеттер , кстати, не работает
Конечно не работает, метод загрузки из БД вызывается в конструкторе.
Vladislav
И больше не вызывается, как видно.
Andreu
Вызывается при изменениях только
Vladislav
Т.е. на скриншоте не вся ViewModel?
Andreu
вся, просто методы в конструкторе возврают livedata, если в бд что-то изменится, я это сразу же увижу
Vladislav
Так Вы же получаете данные, а не меняете их.
Andreu
да. меняю данные я во фрагменте уже. именно в
Andreu
именно в этом случае мне просто отобразить их нужно
Andreu
не знаю, как только динамически менять дату
Vladislav
да. меняю данные я во фрагменте уже. именно в
Меняете дату, правильно, т.е. меняете один параметр запроса, так?
Andreu
да
Andreu
в выборке WHERE column_date=: date