sql >> Database >  >> RDS >> SQLite

Sla nieuwe positie van RecyclerView-items op in SQLite nadat ze zijn gesleept en neergezet

U hebt een veld nodig in elke DB-rij om de bestelling op te slaan. Vervolgens moet u deze functies implementeren:

  • Bij het invoegen van een nieuwe rij (wanneer u een nieuw object in de database invoegt) moet u de volgorde instellen veld naar de volgende int. U kunt de huidige maximale waarde krijgen (met sql-functie MAX ) en doe dan gewoon +1

  • Wanneer de gebruiker een item verplaatst in RecyclerView , in methode onMoved u moet alle andere rijen bijwerken. U kunt de fromPos . gebruiken en toPos daarom. Meer daarover hieronder

  • Wanneer u uw RecyclerView . vult met gegevens die je nodig hebt om ze te bestellen door order veld


Uitleg van de 2e functie die moet worden geïmplementeerd:in principe moet je alle rijen bijwerken met de volgorde tussen fromPos en toPos :

  • als de gebruiker het item omhoog heeft verplaatst (bijvoorbeeld van positie 4 naar 2), moet u:

    1. primair sleutelveld van huidig ​​item ophalen (met positie 4)
    2. verander alle rijen tussen bestelling 2 en bestel 4 :dus verander 2 -> 3 en 3 -> 4
    3. Wijzig de huidige itemvolgorde (met de primaire sleutel van het eerste punt) in toPos :verander in dit voorbeeld de huidige itemvolgorde in 2
  • als de gebruiker het item naar beneden heeft verplaatst (bijvoorbeeld van positie 2 naar 4), moet u:

    1. primair sleutelveld van huidig ​​item ophalen (met positie 2)
    2. verander alle rijen tussen bestelling 2 en volgorde 4:dus verander 4 -> 3 en 3 -> 2
    3. wijzig de huidige itemvolgorde (gebruik de primaire sleutel van het eerste punt) in toPos :verander in dit voorbeeld de huidige itemvolgorde in 4


Hopelijk helpt het een beetje




  1. Hoe geef ik elke geregistreerde gebruiker zijn eigen url met behulp van PHP?

  2. Hoe u de datum van gisteren in PostgreSQL kunt krijgen

  3. Hoe kan ik nul/0 resultaten opnemen in het COUNT-aggregaat?

  4. 2 manieren om dubbele rijen in SQLite te verwijderen