Я создаю компонент на основе RecyclerView, позволяя пользователю переупорядочивать элементы путем перетаскивания. Когда я нахожусь на стороне DragListener, мне нужно положение, которое у него есть в адаптере, чтобы выполнить правильный ход, но у меня есть только доступ к представлению. Итак, вот что я делаю в привязке вида адаптера:
@Override
public void onBindViewHolder(ViewHolder viewHolder, int position) {
Track track = mArray.get(position);
viewHolder.itemView.setTag(R.string.TAG_ITEM_POSITION, position);
}
Это кажется вам правильным? Потому что, если я перемещаю элемент следующим образом:
public void move(int from, int to){
Track track = mArray.remove(from);
mArray.add(to, track);
notifyItemMoved(from, to);
}
тогда тег позиции больше не подходит, и если я notifyDataSetChanged(), я теряю причудливую анимацию. Любое предложение?