注文を保存するために各DB行にフィールドが必要です。次に、これらの機能を実装する必要があります。
-
新しい行の挿入時(データベースに新しいオブジェクトを挿入するとき)、順序を設定する必要があります 次のintへのフィールド。現在の最大値を取得できます(SQL関数
MAX
を使用) )そして、単に+1を実行します -
ユーザーが
RecyclerView
でアイテムを移動したとき 、メソッドonMoved
他のすべての行を更新する必要があります。fromPos
を使用できます およびtoPos
そのために。詳細は以下をご覧ください -
RecyclerView
に入力するとき データを使用する場合は、order
で注文する必要があります フィールド
実装する2番目の機能の説明:基本的に、fromPos
の間の順序ですべての行を更新する必要があります およびtoPos
:
-
ユーザーがアイテムを上に移動した場合(たとえば、位置4から2)、次のことを行う必要があります。
- 現在のアイテムの主キーフィールドを取得します(位置4を使用)
- すべての行を順序2の間で変更します 4を注文します :したがって、2->3および3->4を変更します
- 現在のアイテムの順序を(最初のポイントの主キーを使用して)
toPos
に変更します :この例では、現在のアイテムの順序を2に変更します
-
ユーザーがアイテムを下に移動した場合(たとえば、位置2から4)、次のことを行う必要があります。
- 現在のアイテムの主キーフィールドを取得します(位置2を使用)
- 注文2と注文4の間のすべての行を変更します。したがって、4->3と3->2を変更します
- 現在のアイテムの順序を(最初のポイントの主キーを使用して)
toPos
に変更します :この例では、現在のアイテムの順序を4に変更します
少しお役に立てば幸いです