ListView ordinabile utilizzando SQLite [chiuso]

0

Sto implementando una list list ordinabile usando la libreria di bauerca qui . Funziona, ma ora ho bisogno di definire alcune cose in cui ho bisogno di aiuto. Questa è la funzionalità della mia app _

Posso creare fino a 5 nomi. Questi nomi vengono salvati in un database SQLite. Quindi, in altre attività, questi nomi vengono caricati dal database e mostrati per selezionare quelli che userò.

Con 5 nomi, ci sono diverse combinazioni che posso usare, ma il principio di base di questa app è che quando seleziono alcuni nomi, questi sono mostrati in una list list ordinabile dove posso ordinarli. Dopo averli ordinati, dovrebbero essere salvati in un altro database per ricordare la posizione di ciascuno.

Per questo, il secondo database ha queste colonne: NOME, GRUPPO, ORDINE.

Il mio approccio è questo: se seleziono ad esempio NAME1 e NAME2 , questo sarebbe GROUP2_1 . Se seleziono NAME1 e NAME3 questo sarebbe GROUP2_2 ... e questo con tutte le combinazioni possibili. Quindi, nella colonna ORDER , la posizione di ciascun nome nella listview viene salvata.

Ma sembra che questo approccio con la colonna GROUP non funzioni ... salva la posizione di ciascun nome, ma indipendentemente dal gruppo a cui appartiene. Ad esempio, se ho questi nomi:

MARK
PAUL
JERRY

Se seleziono MARK e JERRY, la listview per la prima volta le mostrerebbe in questo modo:

MARK
JERRY

Ma ora li ordino:

JERRY
MARK

Quindi questa combinazione appartiene a GROUP2_1 e JERRY ha 1 valore nella colonna ORDER e MARK the 2.

Se ora torno indietro e seleziono questa altra combinazione:

MARK
PAUL
JERRY

Questo dovrebbe essere GROUP3_1, e ora li seleziono in questo modo:

MARK
JERRY
PAUL

Quindi ora MARK ha valore ORDER 1, JERRY 2 e PAUL 3.

Ora se torno indietro e carica nuovamente la prima combinazione, caricherà i nomi con l'ultimo valore ORDER assegnato, invece di caricare in questo ordine:

JERRY
MARK

Li caricherà utilizzando i valori delle ultime combinazioni:

MARK
JERRY

Ci scusiamo per una spiegazione così lunga, ma non conosco altro modo migliore per spiegare il mio problema. Nel riprendere, il problema è che il valore ORDER è assegnato a ciascun nome, indipendentemente dal GRUPPO, quindi questo non è un approccio valido per ciò che ho bisogno di ottenere.

Aggiorna - definizione chiave

Questa è la mia tabella corrente:

db.execSQL("CREATE TABLE " + TABLE_NAME + " (" +
            TravelOrder._ID + " INTEGER PRIMARY KEY AUTOINCREMENT," +
            TravelOrder.NAME + " TEXT NOT NULL " +
            ");");
    
posta masmic 17.06.2014 - 09:47
fonte

1 risposta

1

Da quello che hai dato qui, vorrei fare alcune supposizioni aggiuntive e quindi proporre una soluzione.

  1. Hai un insieme di entità che puoi identificare in modo univoco
  2. Ti interessa l'ordine (nella lista) quando hai elenchi di queste entità
  3. Un'entità può trovarsi in più elenchi, gli elenchi NON sono tutti disgiunti

Soluzione: non utilizzare l'ID generato nella seconda tabella. Invece crea una tabella chiamata tabella di gruppo che in realtà ha generato l'ID. Avrai quindi una tabella delle relazioni tra la tabella dei gruppi e la tabella delle entità iniziale (tabella dei nomi): in questa tabella delle relazioni, usa la combinazione di groupID e name come chiave, inoltre aggiungi una colonna di ordine (che tu, e non il DB, dovrà gestire)

[EDIT:] Nello specifico:

  • Tabella 1 (Nome stringa come chiave) per memorizzare i nomi.
  • Tabella 2 (int id come chiave) per memorizzare l'id del gruppo / elenco
  • Tabella delle relazioni della tabella 3 tra la tabella 1 e la tabella 2. Questa avrà la coppia (group_id, name) come chiave e una colonna per l'ordine, gestirete questo valore per mantenere un ordine di ciascun nome nel gruppo.

Se sai quanti gruppi avrai (o quanti gruppi saranno aggiunti in un intervallo di tempo: ora, giorno, settimana, mese, anno), allora proporrei un'altra soluzione.

All'inizio di ogni intervallo, crea il numero di tabelle che desideri. Ciascuna tabella manterrà la lista dei nomi che si desidera avere. Ora utilizzerai l'ID generato automaticamente ogni volta che aggiungi nomi alla tabella. C'è un problema per questo, ma non sono sicuro che il tuo caso di utilizzo possa esserci o meno.

    
risposta data 17.06.2014 - 10:42
fonte

Leggi altre domande sui tag