Autore Topic: assegnazione listener ad una listview  (Letto 862 volte)

Offline Ansem

  • Utente junior
  • **
  • Post: 107
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    HTC HD2
  • Sistema operativo:
    4.0.4
assegnazione listener ad una listview
« il: 25 Maggio 2012, 16:22:27 CEST »
0
Ed eccoci alla seconda puntata della mia listview XD
Sono finalmente riuscito a crearla e farla funzionare,ora l'unico mio problema è riuscire a metterci un listener.
questo è l'adapter:
Codice: [Seleziona]
setListAdapter(new ArrayAdapter(this,
                                android.R.layout.simple_list_item_1,
                                android.R.id.text1,parts));
come faccio a metterci ora un listener? devo aprire un alert con con le informazioni contenute nella riga della textview e alter informazioni che prenderei da un altro array,mi serve quindi che mi dica che posizione ho selezionato. Sarebbe possibile?

Offline emaborsa

  • Utente normale
  • ***
  • Post: 274
  • Java Developer
  • Respect: +33
    • Google+
    • emaborsa
    • Mostra profilo
    • www.emaborsa.com
  • Dispositivo Android:
    Samsung Galaxy S2
  • Sistema operativo:
    Linux 10 - Win8.1 - Android 4.1.2
Re:assegnazione listener ad una listview
« Risposta #1 il: 25 Maggio 2012, 16:39:51 CEST »
0
Fai l'override del metodo onListItemClick() nell'activity stessa, il metodo riporta alcuni valori tra cui la posizione nella lista dell'elemento cliccato. facendo lista.get(position) hai l'elemento cliccato. ATTENZIONE: La lista la devi tenere come variabile di classe, cioè dell'activity stessa.

ESEMPIO

Offline Ansem

  • Utente junior
  • **
  • Post: 107
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    HTC HD2
  • Sistema operativo:
    4.0.4
Re:assegnazione listener ad una listview
« Risposta #2 il: 25 Maggio 2012, 17:07:30 CEST »
0
ho provato ad utilizzare la funzione,ma mi da i seguenti errori nelle prima riga:

protected void onListItemClick(ListView l, View v, int position, long id)

- Syntax error on token ",", ; expected
   - Syntax error on token ",", ; expected
   - Syntax error on token ")", ; expected
   - Syntax error on token ",", ; expected
   - void is an invalid type for the variable
    onListItemClick
   - Syntax error on token "(", ; expected

giusto per sicurezza: io poi come faccio a dire cosa devo fare? lo devo scrivere all'interno del metodo o ne devo creare un'altro da richiamare?

Offline emaborsa

  • Utente normale
  • ***
  • Post: 274
  • Java Developer
  • Respect: +33
    • Google+
    • emaborsa
    • Mostra profilo
    • www.emaborsa.com
  • Dispositivo Android:
    Samsung Galaxy S2
  • Sistema operativo:
    Linux 10 - Win8.1 - Android 4.1.2
Re:assegnazione listener ad una listview
« Risposta #3 il: 25 Maggio 2012, 17:11:22 CEST »
+1
Mi sa che l'hai messo nel punto sbagliato. Postami il codice, magari senza il corpo dei metodi. Dovresti avere:

Codice (Java): [Seleziona]
public class MyActiviti extends Activity{
//dichiarazione della lista
public void onCreate(){
    //definizione della lista
}

@Override
protected void onListItemClick(ListView l, View v, int position, long id) {
    super.onListItemClick(l, v, position, id);
    String selection = lista.getItemAtPosition(position).toString();
}
}
« Ultima modifica: 25 Maggio 2012, 17:14:47 CEST da emaborsa »

Offline Ansem

  • Utente junior
  • **
  • Post: 107
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    HTC HD2
  • Sistema operativo:
    4.0.4
Re:assegnazione listener ad una listview
« Risposta #4 il: 25 Maggio 2012, 17:35:37 CEST »
0
ecco il codice:
Codice: [Seleziona]
super.onCreate(savedInstanceState);
                // First parameter - Context
                // Second parameter - Layout for the row
                // Third parameter - ID of the View to which the data is written
                // Forth - the Array of data
                setListAdapter(new ArrayAdapter(this,
                                android.R.layout.simple_list_item_1,
                                android.R.id.text1,targhe));
               
                /*@Override
                protected void onListItemClick(ListView l, View v, int position, long id) {
                 // TODO Auto-generated method stub
                 //super.onListItemClick(l, v, position, id);
                 String selection = l.getItemAtPosition(position).toString();
                 Toast.makeText(this, selection, Toast.LENGTH_LONG).show();
                };*/
                }       

la parte precedente è l'invio e la ricezione di un post

Offline emaborsa

  • Utente normale
  • ***
  • Post: 274
  • Java Developer
  • Respect: +33
    • Google+
    • emaborsa
    • Mostra profilo
    • www.emaborsa.com
  • Dispositivo Android:
    Samsung Galaxy S2
  • Sistema operativo:
    Linux 10 - Win8.1 - Android 4.1.2
Re:assegnazione listener ad una listview
« Risposta #5 il: 25 Maggio 2012, 20:34:49 CEST »
+1
difatti hai messo il onListItemClick dentro al onCreate. Tiralo fuori:

Codice (Java): [Seleziona]
super.onCreate(savedInstanceState);
    setListAdapter(new ArrayAdapter(this,
        android.R.layout.simple_list_item_1,
        android.R.id.text1,targhe));
}
@Override
protected void onListItemClick(ListView l, View v, int position, long id) {
    String selection = l.getItemAtPosition(position).toString();
    Toast.makeText(this, selection, Toast.LENGTH_LONG).show();
};