Мумитроль
Нет, в смысле почему мигание. Т.е. вьюха же будет заполнена до показа на экране, мигания быть в принципе не должно
Мумитроль
А я о корне проблемы
Сергей
костыль в том чтобы очищать состояние вьюхи в onDetach?
Сергей
окей
Сергей
тогда программироавние под андроид - костыль
Dmitriy
Это не костыль, без тех же вью моделей и биндингов если вы в списке будете отображать изображения, которые грузятся из сети, и не будете очищать или делать еще что нибудь чтобы перед загрузкой сбрасывать старое изображение с вьюхи - то будет веселое мигание картинок
Dmitriy
Ну и на самом деле я не силен в специфики биндинга, но что то мне подсказывает, что переиспользование ресайклером ранее созданного viewHolder'a приводит к тому что вьюха отображается ранее чем происходит новым биндинг
Андрей
Dmitriy
))))
Artem
мигание потому что вьюха отображаеться, а потом происходит проверка условие defaul помог)
Artem
это по документации так)) но оно мигало, мазафака... Мы все знаем что в андроиде есть много бочин. Дефоулт параметр есть не просто так
Сергей
если моргает значит у тебя биндинг кривой
Сергей
либо ты его делаешь методом add и не удаляешь в детаче, в следствие чего у тебя биндинг делается столько раз сколько раз переиспользовалась вьюшка
Сергей
либо что то еще
Сергей
для этого существует отладчик, чтобы не гадать на кофейной гуще
Андрей
кто-нибудь сталкивался с проблемой, когда в recyclerView onBindViewHolder отрабатывает для ВСЕХ элементов при первоначальном добавлении?
Андрей
при этом если их 300, то реально рендерятся ВСЕ сразу
Nikita
помогите плз разобраться почему не отображается текст 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>. все стили пописаны
Андрей
что само собой баг
Сергей
что само собой баг
recycler у тебя растягивается по ширине всего контента а не по ширине экрана
Dmitriy
А можно верстку экрана с ним увидеть?
Андрей
recyclerview инфлейтится в отдельном лейауте
Андрей
А можно верстку экрана с ним увидеть?
<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>
Dmytro
Как правильно удалять элемент из ListView or RecyclerView?
Андрей
вот в 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 нет
Андрей
вообще
Сергей
android:layout_height="0dip"
Сергей
вот причина
Dmitriy
Зачем вес задан и почему 0dip
Андрей
потому что ниже еще лэйаут с кнопками
Сергей
Зачем вес задан и почему 0dip
0dp нужно ставить если задаешь вес, сама студия об этом подсказывает, но для ресайклера так делать нельзя
Андрей
хм, окей, избавлюсь от этого тогда
Dmitriy
Так у него один элемент только с весом и weightsum не указан
Dmitriy
Там вообще жопа, лучше уж констраинт или на крайний случай релатив заюзать для такого отображения как нужно
Андрей
не
Андрей
другие элементы закомментил
Андрей
вес убрал
Андрей
поставил высоту в match parent
Андрей
результат тот же
Сергей
вес убрал?
Лёша
Как правильно удалять элемент из ListView or RecyclerView?
Удалить сперва из списка, где хранишь данные для отображения, потом notifyItemRemoved()(в случае с recyclerview) у адаптера а вообще это гуглится запросом в три слова
Андрей
вес убрал?
ну теперь лэйаут который инфлейтится такой
Андрей
<?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
про gist., pastebin - не, не слышали?
Сергей
а как ты инфлейт делаешь?
Dmitriy
Кстати, откуда уверенность что все отрисовывает?
Андрей
Кстати, откуда уверенность что все отрисовывает?
onbindviewholder дергается для всех элементов, в логе глянул
Андрей
при этом это занимает около 6 секунд
Андрей
а как ты инфлейт делаешь?
LayoutInflater inflater = (LayoutInflater) getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE); View root = inflater.inflate(screenLayoutId, this, true);
Dmitriy
Странно Это, я такой баг встречал только если ресайклер положить в скролл контейнер, тогда начинается такая фигня, он просто создает холдеры а не переиспользует их
Андрей
да вообще странно, 2 дня с этим сижу
Андрей
при этом обнаружил что у одного чувака был такой баг из-за бага в саппортовской либе
Андрей
но мне откат не помог
Игорь
Ребят подскажите библиотеку или хотя бы поисковой запрос для поиска библиотеки, которая генерит картинку (аватар) по первым буквам textView( инициалы пользователя)
Dmitriy
но мне откат не помог
Вопрос, а у вас итемы в момент добавления имеют хоть какую то высоту или нет? То есть возможно все содержимое элемента gone, Вот он и создает их чтобы заполнить всю область видимости
Игорь
TextDrawable
Спасибо огромное
Андрей
и да, они сразу видны
Андрей
это вообще не помогло
Сергей
LayoutInflater inflater = (LayoutInflater) getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE); View root = inflater.inflate(screenLayoutId, this, true);
я не уверен что ты правильно инфлейт делаешь, по крайней мере параметры меня смущают
Dmitriy
Еще вопрос, в самой первой вьюху у вас релатив имеет ширину ноль и вес, а куда он вкладывается?
Андрей
а тот уже рут для всего
Dmitriy
А можно тогда еще верстку где тот рут линеар?
Андрей
А можно тогда еще верстку где тот рут линеар?
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:background="@drawable/wallpaper" android:orientation="horizontal"> <LinearLayout android:layout_width="100dp" android:layout_height="match_parent" android:layout_gravity="center" android:background="@color/colorPrimaryDarkTransparent" android:elevation="4dp" android:orientation="vertical"> <ImageView/> <ImageView /> <ImageView /> <ImageView /> <ImageView /> <ImageView/> </LinearLayout> <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> <Button /> <Button/> <Button /> <android.support.design.widget.FloatingActionButton/> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/toolbar_container" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:layout_centerInParent="true" android:layout_margin="10sp" android:background="@drawable/form_border" android:gravity="center" android:orientation="vertical" android:padding="5sp"> <TextView" /> </LinearLayout> </RelativeLayout> </LinearLayout>
Андрей
я подсократил чуть, но тут все что есть
Dmitriy
Блин, ну я не вижу явной причины для такого поведения recycler'a