sql >> データベース >  >> RDS >> SQLite

ドラッグアンドドロップした後、SQLiteにRecyclerViewアイテムの新しい位置を保存します

    注文を保存するために各DB行にフィールドが必要です。次に、これらの機能を実装する必要があります。

    • 新しい行の挿入時(データベースに新しいオブジェクトを挿入するとき)、順序を設定する必要があります 次のintへのフィールド。現在の最大値を取得できます(SQL関数MAXを使用) )そして、単に+1を実行します

    • ユーザーがRecyclerViewでアイテムを移動したとき 、メソッドonMoved 他のすべての行を更新する必要があります。 fromPosを使用できます およびtoPos そのために。詳細は以下をご覧ください

    • RecyclerViewに入力するとき データを使用する場合は、orderで注文する必要があります フィールド


    実装する2番目の機能の説明:基本的に、fromPosの間の順序ですべての行を更新する必要があります およびtoPos

    • ユーザーがアイテムを上に移動した場合(たとえば、位置4から2)、次のことを行う必要があります。

      1. 現在のアイテムの主キーフィールドを取得します(位置4を使用)
      2. すべての行を順序2の間で変更します 4を注文します :したがって、2->3および3->4を変更します
      3. 現在のアイテムの順序を(最初のポイントの主キーを使用して)toPosに変更します :この例では、現在のアイテムの順序を2に変更します
    • ユーザーがアイテムを下に移動した場合(たとえば、位置2から4)、次のことを行う必要があります。

      1. 現在のアイテムの主キーフィールドを取得します(位置2を使用)
      2. 注文2と注文4の間のすべての行を変更します。したがって、4->3と3->2を変更します
      3. 現在のアイテムの順序を(最初のポイントの主キーを使用して)toPosに変更します :この例では、現在のアイテムの順序を4に変更します


    少しお役に立てば幸いです




    1. OpenCartでカスタム配送方法を作成する:パート2

    2. Python:mysqldbを使用してMySQLテーブルをディクショナリとしてインポートしますか?

    3. mysqldumpのベストプラクティス:パート1 –MySQLの前提条件

    4. オラクルでblobサイズを見つけるためのdbms_lob.getlength()とlength()