Associare un'attività con un elemento in ListViews XML in Android
-
21-09-2019 - |
Domanda
Ho un ListView che viene popolato utilizzando un file XML. Tuttavia, voglio ogni voce, se cliccato, per intraprendere una nuova attività relative a tale elemento.
ho capito come utilizzare OnItemClick di avviare un toast che mostra il testo della voce selezionata. Tuttavia, dal momento che il controllo ListView è popolato da un XML non v'è un ID specifico per ogni elemento della lista.
Quindi, come potrei associare un'attività con ciascun elemento della ListView quando gli elementi non hanno Ids?
Soluzione
Mantenere nel vostro file XML un nodo per l'attività che deve essere chiamato, in un formato numerico o una stringa. Poi hanno un elenco di attività in una collezione, che stanno implementando una certa classe di interfaccia / astratta, in modo da poter ciclo su di esso. Anche le attività hanno un campo / metodo statico che restituiscono il loro numero di riferimento o di una stringa in modo da poter confrontare troppo.
Qualche schizzo:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<category
name="Item One"
id="grp1" />
<category
name="Item Two"
id="grp2" />
</resources>
In Java:
List<AbstractTable> col = new ArrayList<AbstractTable>();
col.add(new clsGroup1(this.ctx));
col.add(new clsGroup2(this.ctx));
for (AbstractTablecls : col) {
if (cls.getTag().equals(varFromListSelection)) {
//launch intent of this class
}
}
dove getTag()
restituisce l'identificatore per la classe ad esempio: grp1
o grp2