我正在構建基於RecyclerView的組件,允許用戶通過拖放來重新排序項目。 一旦我在DragListener一側,我需要它在適配器中的位置以執行正確的移動,但我只能訪問該視圖。 所以這是我做的適配器視圖結合:RecyclerView適配器notifyDataSetChanged停止花式動畫
@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(),我失去了花哨的動畫。 有什麼建議嗎?
好的,謝謝你的回答=)但現在什麼是從adpater外部檢索位置的最佳方式(例如我的dragListener)? – elgui 2014-12-05 08:38:25
從recyclerview獲取子查看持有者,然後從vh獲取位置。見RecyclerView API的細節 – yigit 2014-12-05 09:30:22
偉大的,非常感謝你=) – elgui 2014-12-05 13:27:16