4

ItemTouchHelper を使用してノート アプリにドラッグ アンド ドロップ機能を実装しようとしましたが、カーソルを操作する方法を理解するのに苦労しています。現在、カーソルローダーとコンテンツプロバイダーを使用してデータベースから保存されたメモデータを取得しています。アダプターは、示されているように、返されたカーソルからデータを受け取ります。

public void onBindViewHolder(RecyclerViewAdapter.MyViewHolder holder, int position) {
    mCursor.moveToPosition(position);
    String title = mCursor.getString(mCursor.getColumnIndex(NotesContract.COL_TITLE));
    String body = mCursor.getString(mCursor.getColumnIndex(NotesContract.COL_BODY));
    holder.titleText.setText(title);
    holder.bodyText.setText(body);
}

私が抱えている問題は、リスト内の移動したアイテムをドラッグ アンド ドロップしたときにその位置を追跡する方法がわからないことです。カーソル内の行の順序を変更できません。アダプタのデータ ソースがリストである例だけを見てきました。カーソル データを Note オブジェクトのリストにコピーして、ドラッグ アンド ドロップによる変更を反映するようにカーソル データを再配置することを検討しましたが、これでは、カーソルとカーソル ローダーを使用することで得られるすべてが無効になるようです。また、カーソルローダーがロードを完了すると、元の順序ですべての結果を含む新しいカーソルが返され、それに応じてアダプターが読み込まれるため、新しいリストが失われた場合に順序に加えられた変更はすべて失われます。

誰かがこれを行う方法を知っていますか、それともカーソルとローダーを使用してこれを完全に間違った方法で行っていますか? どんな助けでも大歓迎です。ありがとう!

4

2 に答える 2