ListView
アイテムの並べ替えは、iOSでは非常に簡単です。 Android=で同じことをしたいのですが、かなり扱いにくいようです:アイテムの並べ替えはSDKでサポートされていないため、独自に実装するか、3番目を使用する必要がありますパーティの実装。
この質問に関する記事や投稿をいくつか見つけましたが、それらはすべてかなり古いもの(2〜3年)でした。たとえば bauerca DragSortListView は多くの場所で参照されていますが、プロジェクトは維持されていません。私のアプリはAndroid 4+のみをサポートする必要があるので、その間にこれを行う方が良いかどうか尋ねたかったのです。
もちろん、ドラッグアンドドロップの並べ替えがユーザーにとって最も便利な方法ですが、機能する解決策があります(たとえば、上下にコンテキストメニューを使用します)。
Android 4 +?でアイテムを並べ替える最良の方法は何ですか?
これを行うデフォルト/標準的な方法のようなものはありますか?
この質問はかなり古くからですが、「Androidでリストアイテムを並べ替える最良の方法」を検索すると最初に表示され、回答がありませんでした。
OPはListView
を質問しました。質問の時点で、それらは最も一般的に使用されていたためです。今日では、RecyclerView
よりも多くの利点があるため、ListView
を使用することをお勧めします。これらの利点の1つは、並べ替えを実装するために必要なものです。 ItemTouchHelper
。
RecyclerView
の実装方法を確認するには、次の例をご覧ください。 https://github.com/googlesamples/Android-RecyclerView
並べ替えを実装する部分は、次のようにRecyclerView
にアタッチすることです。
mRecyclerView = (RecyclerView) rootView.findViewById(R.id.recyclerView);
ItemTouchHelper touchHelper = new ItemTouchHelper(new ItemTouchHelper.Callback() {
public boolean onMove(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder, RecyclerView.ViewHolder target) {
Collections.swap(dataList, viewHolder.getAdapterPosition(), target.getAdapterPosition());
mAdapter.notifyItemMoved(viewHolder.getAdapterPosition(), target.getAdapterPosition());
return true;
}
@Override
public void onSwiped(RecyclerView.ViewHolder viewHolder, int direction) {
// no-op
}
@Override
public int getMovementFlags(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder) {
return makeFlag(ItemTouchHelper.ACTION_STATE_DRAG,
ItemTouchHelper.DOWN | ItemTouchHelper.UP | ItemTouchHelper.START | ItemTouchHelper.END);
}
});
touchHelper.attachToRecyclerView(mRecyclerView);