Когда я прикрепляю ItemTouchHelper к RecyclerView для перетаскивания элементов в список и долго нажимаю на элемент, не перетаскивая его в новая позиция, элемент удаляется из моего списка, и getItemCount возвращает 0 обратно, но элемент все еще виден, как будто он будет закреплен. Когда добавляются другие элементы, они просто накладываются.
Единственным решением было установить в представлении LongClickListener, который также удаляет элемент при нажатии, но я не думаю, что это хорошее решение. Как я могу решить эту проблему?

< /p>
Мой код:
MainActivtiy:
class MainActivity : AppCompatActivity() {
@SuppressLint("MissingInflatedId")
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val recyclerView = findViewById(R.id.recView)
recyclerView.layoutManager = LinearLayoutManager(this)
val myAdapter = MyAdapter(layoutInflater,mutableListOf("A","B","C","D","E","F")){items,position->
items.removeAt(position)
recyclerView.adapter?.notifyItemRemoved(position)
}
recyclerView.adapter = myAdapter
val myItemTouchHelper = ItemTouchHelper(object : ItemTouchHelper.SimpleCallback(ItemTouchHelper.UP or ItemTouchHelper.DOWN,0){
override fun onMove(
recyclerView: RecyclerView,
viewHolder: ViewHolder,
target: ViewHolder
): Boolean {
val item = myAdapter.items[viewHolder.adapterPosition]
myAdapter.items.removeAt(viewHolder.adapterPosition)
myAdapter.items.add(target.adapterPosition,item)
recyclerView.adapter?.notifyItemMoved(viewHolder.adapterPosition,target.adapterPosition)
return true
}
override fun onSwiped(viewHolder: ViewHolder, direction: Int) {
}
})
myItemTouchHelper.attachToRecyclerView(recyclerView)
}
}
Мой адаптер:
class MyAdapter(val layoutInflater: LayoutInflater, val items: MutableList,val onItemClicked: (items: MutableList,position: Int)->Unit): RecyclerView.Adapter() {
class MyViewHolder(view: View): ViewHolder(view){
val textView = view.findViewById(R.id.textview)
}
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): MyViewHolder {
return MyViewHolder(layoutInflater.inflate(R.layout.list_item,parent,false))
}
override fun getItemCount(): Int {
return items.size
}
override fun onBindViewHolder(holder: MyViewHolder, position: Int) {
holder.textView.text = items[position]
holder.textView.setOnClickListener{
onItemClicked(items,holder.adapterPosition)
}
}
}
Подробнее здесь: https://stackoverflow.com/questions/780 ... long-press
Мобильная версия