Как реализовать движение рамки вместе с текущей позицией в recycleview?
Я пытаюсь добавить рамку к текущему элементу. Для смены вида item используется selector. Selector использую в корневом item следующим образом android:background="@drawable/selector_item" При смене текущего элемента рамка тоже должна передвигаться. Она передвигается, только если находится в пределах видимости. Если я вызываю scrollToPosition, когда новый элемент recycle не виден даже краем, то рамка пропадает.
//recycle_color.get(position).constr_item.isSelected = true
if(position==0)
{
recycle_color.layoutManager?.findViewByPosition(position)?.constr_item?.isSelected = false
}
else {
recycle_color.layoutManager?.findViewByPosition(position)?.constr_item?.isSelected = false
}
val s1 = recycle_color.adapter?.itemCount
var indexEl: Int = 0
var currentFile = ElementCatalog(my_file, false)
if (position == s1) {
if (recycle_color.layoutManager?.findViewByPosition(positionItem)?.checkBox?.isChecked == true) {
indexEl = prod1.indexOf(currentFile)
prod1[indexEl].priznak = true
myRecycler.apply {
layoutManager = GridLayoutManager(context, 2)
adapter = CustomRecyclerAdapter(prod1, this@MainFragment)
}
val dialog = DialogFileFragment()
dialog.show(childFragmentManager, "custom")
}
position = 0
recycle_color.layoutManager?.findViewByPosition(position)?.constr_item?.isSelected = false
}
else {
position = position + 1
recycle_color.layoutManager?.findViewByPosition(position)?.constr_item?.isSelected = true
}
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/constraintLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="15dp"
android:layout_marginTop="75dp"
android:layout_marginEnd="15dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/constraintLayout4">
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/constraintLayout3"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/border2"
app:layout_constraintBottom_toTopOf="@+id/recycle_color"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.0"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">
<TextView
android:id="@+id/textView8"
android:layout_width="95sp"
android:layout_height="match_parent"
android:text="@string/ColorItem"
android:gravity="center"
android:textSize="25sp"
android:textColor="#4C7286"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/textView17"
android:layout_width="80sp"
android:layout_height="wrap_content"
android:layout_marginStart="95dp"
android:background="@drawable/border2"
android:gravity="center"
android:text="@string/Serial_number_2"
android:textColor="#4C7286"
android:textSize="25sp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/textView18"
android:layout_width="100sp"
android:layout_height="wrap_content"
android:background="@drawable/border2"
android:gravity="center"
android:text="@string/Article"
android:textColor="#4C7286"
android:textSize="25sp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toEndOf="@+id/textView17"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/textView19"
android:layout_width="110sp"
android:layout_height="wrap_content"
android:background="@drawable/border2"
android:gravity="center"
android:text="@string/Lot"
android:textColor="#4C7286"
android:textSize="25sp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toEndOf="@+id/textView18"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/textView20"
android:layout_width="100sp"
android:layout_height="wrap_content"
android:background="@drawable/border2"
android:gravity="center"
android:text="@string/Weight"
android:textColor="#4C7286"
android:textSize="25sp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toEndOf="@+id/textView19"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/recycle_color"
android:layout_width="match_parent"
android:layout_height="207dp"
app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/constraintLayout3"
tools:itemCount="2"
tools:listitem="@layout/list_item" />
</androidx.constraintlayout.widget.ConstraintLayout>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<!-- Selected background -->
<item android:state_selected="true"
android:drawable="@drawable/item_selection_shape"/>
<!-- Unselected background -->
<item android:state_selected="false"
android:drawable="@color/colorWhite"/>
</selector>
Ответы (1 шт):
Автор решения: ilia53v
→ Ссылка
Добавил объект
var listPosition = 0
}
После чего в реализацию кнопки добавил следующий код
position = position + 1
CommonData.listPosition = position
var itemcount:Int = 0
if (recycle_color.adapter!=null) {
itemcount = recycle_color.adapter?.itemCount!!
}
recycle_color.adapter?.notifyItemRangeChanged(0,itemcount)
recycle_color.layoutManager?.scrollToPosition(position)
В адаптер (onBindViewHolder)
val view = holder.itemView
view.isSelected = (position==CommonData.listPosition)


