:
@Override
public boolean onMove(RecyclerView recyclerView, RecyclerView.ViewHolder source, RecyclerView.ViewHolder target) {
//if (source.getItemViewType() != target.getItemViewType()) {
// return false;
//}
// Notify the adapter of the move
mAdapter.onItemMove(source.getAdapterPosition(), target.getAdapterPosition());
return true;
}
私から取ったドラッグドロップについてのチュートリアルを変更していません。そうすれば、リサイクルビューをフッターで文字通りに重ねる必要はありません。フッターの上で終わることができ、それでも子供が境界線の外に出ることができます。
静的フッターがある場合は、y軸が現在のアイテムがフッターと交差するまで十分に移動したと判断したときにbringToFrontを呼び出すことができます。その後、範囲外に戻るときや、recyclerviewがまったくスクロールしたときに、フッターを前面に戻してください。しかし、これは特にエラーが起こりやすい。ハックのビット。
編集:
異なるアプローチが完全にドラッグされた項目とrecyclerview(これは、ドロップ部の作業のビットがかかります)との間の接続を切断することで、ステップは、おおよそ次のようになります
- Start dragging item i
- store a reference to i.getParent() and the view index within its parent
- i.getParent().removeView(i) //detach the item from the recycler (or create clone)
- layout.addView(i) //add item onto main layout containing footer, allowing overlap
- when dropped, use the parent reference and index to reattach the item
- then work out where the item was released
私は少し混乱しています。私はonMoveをまったく使用していますか?私はドラッグを使用していますが、私はアイテムの位置を移動していません。 私のonMoveはfalseを返します。 あなたのコードは、recyclerviewにないアイテムに対して、recyclerviewからアイテムを移動するのに役立つのはなぜですか? –
申し訳ありませんが、問題が十分に指定されていません。 – deadfish
ご意見ありがとうございます。どうすればより良い問題を特定できますか?あなたは今それを理解していますか?たぶん、それは答えの数が少ない理由でしょうか? –