コメントの中で最も簡単な方法は、RecyclerViewを使用してドラッグ&ドロップを実装するように言われました。それは簡単なドラッグ&ドロップ機能を処理することができるItemTouchHelper
という名前の特別なクラスが含まれています。 ListViewの場合は、RecyclerViewに比べてもっと多くのコードを書く必要があります。
ItemTouchHelper item = new ItemTouchHelper(new ItemTouchHelper.Callback() {
@Override
public int getMovementFlags(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder) {
int dragFlags = ItemTouchHelper.UP | ItemTouchHelper.DOWN;
int swipeFlags = 0;
return makeMovementFlags(dragFlags, swipeFlags);
}
@Override
public boolean onMove(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder, RecyclerView.ViewHolder target) {
Collections.swap(dateList, viewHolder.getAdapterPosition(), target.getAdapterPosition());
adapter.notifyItemMoved(viewHolder.getAdapterPosition(), target.getAdapterPosition());
return true;
}
@Override
public void onMoved(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder, int fromPos, RecyclerView.ViewHolder target, int toPos, int x, int y) {
super.onMoved(recyclerView, viewHolder, fromPos, target, toPos, x, y);
Toast.makeText(MainActivity.this, "Moved", Toast.LENGTH_SHORT).show();
}
@Override
public void onSwiped(RecyclerView.ViewHolder viewHolder, int direction) {}
});
item.attachToRecyclerView(recyclerView);
はい、もっと簡単な方法があります:
次のコードは、私が有用であることが判明したものです。 'RecyclerView'を使用してください。あなたは欲望を見つけることができますhttps://medium.com/@ipaulpro/drag-and-swipe-with-recyclerview-b9456d2b1aaf#.punzdwyhd – skywall
これは、今からRecyclerViewを使う方が良いということですか?ドラッグ&ドロップだけでなく、 – Marat
これをチェックしてください。https://github.com/HoneyNeutrons/RecyclerViewUndoSwipe –