
Artem
25.05.2018
07:36:37
это особенно выедает глаза в списках, когда быстро листаешь, все вьюшки есть, а потом исчезают лишние

Dmitriy
25.05.2018
07:37:03
https://stackoverflow.com/questions/44420396/use-data-binding-to-set-view-visibility
Но мне кажется со списком это не решит проблему, так как при переиспользовании viewHolder'ов он не будет пересоздавать вьюху а значит дефолт возвращать не будет. Хотя я может чего то не знаю о биндинге

Сергей
25.05.2018
07:40:40

Google

Сергей
25.05.2018
07:41:10
а если нужно показать делай инсерт в списк и нотифай

Artem
25.05.2018
07:41:54
когда-то слышали запах костылей?

Сергей
25.05.2018
07:42:44
запах костылей это когда ты пытаешься сделать вьюхолдер невидимым

Dmitriy
25.05.2018
07:43:24
Мне казалось что он пытается скрыть что то внутри итема, а не сам итем

balolam
25.05.2018
07:43:50
Делать итем невидимым - глупость
Просто удали

Dmitriy
25.05.2018
07:44:20
Например есть в элементе списка картинка, которая показывает что это новая запись или нет, и взависимости от флага в моделе который на это указывает нужно ее скрыть или показать

Artem
25.05.2018
07:44:58

Dmitriy
25.05.2018
07:45:23
Ну тогда то что я скинул, то бишь default добавь

balolam
25.05.2018
07:45:28

Сергей
25.05.2018
07:45:30
значит видимость элемнета нужно менять не в бинде а до него

Dmitriy
25.05.2018
07:46:07
Ну и видимо в onDetachViewHolder - делать gone принудительно, иначе при переиспользовании холдера он тебе сохранит его стейт и также будет мигать

Artem
25.05.2018
07:47:01
спасибо всем)

Google

balolam
25.05.2018
07:48:46
А почему вообще мигание? Там же заполнение происходит раньше чем элемент будет виден на экране
Может проблема в другом
Или у вас там анимация

Dmitriy
25.05.2018
07:50:33
Я думаю проблема в этом
Ну и видимо в onDetachViewHolder - делать gone принудительно, иначе при переиспользовании холдера он тебе сохранит его стейт и также будет мигать

balolam
25.05.2018
07:51:36
Нет, в смысле почему мигание. Т.е. вьюха же будет заполнена до показа на экране, мигания быть в принципе не должно
А я о корне проблемы

Сергей
25.05.2018
07:52:22
костыль в том чтобы очищать состояние вьюхи в onDetach?
окей
тогда программироавние под андроид - костыль

Dmitriy
25.05.2018
07:52:54
Это не костыль, без тех же вью моделей и биндингов если вы в списке будете отображать изображения, которые грузятся из сети, и не будете очищать или делать еще что нибудь чтобы перед загрузкой сбрасывать старое изображение с вьюхи - то будет веселое мигание картинок
Ну и на самом деле я не силен в специфики биндинга, но что то мне подсказывает, что переиспользование ресайклером ранее созданного viewHolder'a приводит к тому что вьюха отображается ранее чем происходит новым биндинг

Андрей
25.05.2018
07:54:46

Dmitriy
25.05.2018
07:54:55
))))

Artem
25.05.2018
08:05:38
мигание потому что вьюха отображаеться, а потом происходит проверка условие
defaul помог)

Сергей
25.05.2018
08:06:07

Artem
25.05.2018
08:07:53
это по документации так)) но оно мигало, мазафака... Мы все знаем что в андроиде есть много бочин. Дефоулт параметр есть не просто так

Сергей
25.05.2018
08:08:13
если моргает значит у тебя биндинг кривой
либо ты его делаешь методом add и не удаляешь в детаче, в следствие чего у тебя биндинг делается столько раз сколько раз переиспользовалась вьюшка

Google

Сергей
25.05.2018
08:09:12
либо что то еще
для этого существует отладчик, чтобы не гадать на кофейной гуще

Андрей
25.05.2018
08:12:56
кто-нибудь сталкивался с проблемой, когда в recyclerView onBindViewHolder отрабатывает для ВСЕХ элементов при первоначальном добавлении?
при этом если их 300, то реально рендерятся ВСЕ сразу

Nikita
25.05.2018
08:13:10
помогите плз разобраться почему не отображается текст hint, если поле ввода не в фокусе, <android.support.design.widget.TextInputLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:hintTextAppearance="@style/MyHintText">
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="@string/Title"
android:theme="@style/MyEditText" />
</android.support.design.widget.TextInputLayout>. все стили пописаны

Андрей
25.05.2018
08:13:12
что само собой баг

Dmitriy
25.05.2018
08:13:30

Сергей
25.05.2018
08:14:26
что само собой баг
recycler у тебя растягивается по ширине всего контента а не по ширине экрана

Андрей
25.05.2018
08:14:44

Dmitriy
25.05.2018
08:15:02
А можно верстку экрана с ним увидеть?

Андрей
25.05.2018
08:15:05
recyclerview инфлейтится в отдельном лейауте

Сергей
25.05.2018
08:15:10

Nikita
25.05.2018
08:16:09

Андрей
25.05.2018
08:16:24
А можно верстку экрана с ним увидеть?
<RelativeLayout
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1">
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/screen_container"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_centerInParent="true"
android:layout_margin="0dp"
android:focusable="true"
android:focusableInTouchMode="true"
android:gravity="center_vertical|center_horizontal|center"
android:orientation="vertical"
android:padding="10dp">
<TextView
android:id="@+id/textView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="place holder"
android:textAppearance="?android:attr/textAppearanceMedium" />
</LinearLayout>

Dimitrios
25.05.2018
08:16:39
Как правильно удалять элемент из ListView or RecyclerView?


Андрей
25.05.2018
08:16:46
вот в screen_container в рантайме инфлейтится отдельный лэйаут
вот такой
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".activities.MainActivity">
<LinearLayout
android:orientation="vertical"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<include layout="@layout/common_screen_title" />
<include layout="@layout/delimeter_hor" />
</LinearLayout>
<android.support.v7.widget.RecyclerView
android:id="@+id/scr_order_list"
android:layout_width="match_parent"
android:layout_height="0dip"
android:layout_weight="1"/>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:orientation="horizontal">
<Button
android:theme="@style/WhiteButton"
android:id="@+id/scr_metaorder_btn_start"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/scr_orders_btn_metaorder" />
<Button
android:theme="@style/WhiteButton"
android:id="@+id/scr_metaorder_btn_finish"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/scr_orders_btn_finish" />
</LinearLayout>
</LinearLayout>
то есть
никаких scrollView нет

Google

Андрей
25.05.2018
08:17:40
вообще

Сергей
25.05.2018
08:17:45
android:layout_height="0dip"
вот причина

Dmitriy
25.05.2018
08:18:24
Зачем вес задан и почему 0dip

Андрей
25.05.2018
08:18:35
потому что ниже еще лэйаут с кнопками

Сергей
25.05.2018
08:18:58

Андрей
25.05.2018
08:19:21
хм, окей, избавлюсь от этого тогда

Dmitriy
25.05.2018
08:19:25
Так у него один элемент только с весом и weightsum не указан
Там вообще жопа, лучше уж констраинт или на крайний случай релатив заюзать для такого отображения как нужно

Сергей
25.05.2018
08:20:26

Андрей
25.05.2018
08:20:56
не
другие элементы закомментил
вес убрал
поставил высоту в match parent
результат тот же

Сергей
25.05.2018
08:21:31
вес убрал?

Лёша
25.05.2018
08:21:34

Андрей
25.05.2018
08:23:02
вес убрал?
ну теперь лэйаут который инфлейтится такой
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".activities.MainActivity">
<android.support.v7.widget.RecyclerView
android:id="@+id/scr_order_list"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</LinearLayout>

Roman
25.05.2018
08:23:14
про gist., pastebin - не, не слышали?

Google

Сергей
25.05.2018
08:23:45
а как ты инфлейт делаешь?

Dmitriy
25.05.2018
08:24:03
Кстати, откуда уверенность что все отрисовывает?

Dimitrios
25.05.2018
08:29:31

Андрей
25.05.2018
08:30:16
при этом это занимает около 6 секунд
а как ты инфлейт делаешь?
LayoutInflater inflater = (LayoutInflater) getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View root = inflater.inflate(screenLayoutId, this, true);

Dmitriy
25.05.2018
08:32:12
Странно Это, я такой баг встречал только если ресайклер положить в скролл контейнер, тогда начинается такая фигня, он просто создает холдеры а не переиспользует их

Андрей
25.05.2018
08:33:23
да вообще странно, 2 дня с этим сижу
при этом обнаружил что у одного чувака был такой баг из-за бага в саппортовской либе
но мне откат не помог

Игорь
25.05.2018
08:33:59
Ребят подскажите библиотеку или хотя бы поисковой запрос для поиска библиотеки, которая генерит картинку (аватар) по первым буквам textView( инициалы пользователя)

Viktor
25.05.2018
08:34:57

Dmitriy
25.05.2018
08:34:58
но мне откат не помог
Вопрос, а у вас итемы в момент добавления имеют хоть какую то высоту или нет? То есть возможно все содержимое элемента gone, Вот он и создает их чтобы заполнить всю область видимости

Игорь
25.05.2018
08:35:21

Андрей
25.05.2018
08:35:29
и да, они сразу видны
это вообще не помогло

Сергей
25.05.2018
08:36:57

Dmitriy
25.05.2018
08:37:27
Еще вопрос, в самой первой вьюху у вас релатив имеет ширину ноль и вес, а куда он вкладывается?

Андрей
25.05.2018
08:38:32
а тот уже рут для всего

Dmitriy
25.05.2018
08:38:59
А можно тогда еще верстку где тот рут линеар?