2012-02-01 14 views
8

Uso ListView per mostrare diversi elementi. mio row.xml come di seguito:Ottieni posizione in ListView

<TextView android:text="text" 
android:id="@+id/tvViewRow" 
android:layout_width="wrap_content" 
android:layout_height="wrap_content"> 
</TextView> 
<Button android:text="Click me!" 
android:id="@+id/BtnToClick" 
android:layout_width="wrap_content" 
android:layout_height="wrap_content" 
android:onClick="myClick"> 
</Button> 

E io definisco MyClick in attività come di seguito:

public void myClick (View v) { 
LinearLayout vwParentRow = (LinearLayout)v.getParent(); 
//How to get the position 
} 

Come conoscere la posizione che buttom essere cliccato? La posizione equivale al metodo suListItemClick.

@Override 
protected void onListItemClick(ListView l, View v, int position, long id) { 
} 
+0

Questa domanda è stato chiesto prima, si prega di guardare in alto domande prima distacco. – JoxTraex

risposta

33

Prova

public void DetailClick(View v) { 
ListView lv = getListView(); 
int position = lv.getPositionForView(v); 
} 
+1

Grazie mille per questo! perché quell'informazione è così nascosta? – user1862770

1

Sì, la posizione in onListItemClick è uguale alla posizione dell'elemento selezionato nell'elenco.

+0

Voglio dire come ottenere la posizione nel metodo myClick – brian

1

Se ho capito bene la tua domanda, hai un pulsante in ogni riga di un ListView e vuoi sapere quale riga ha ricevuto il clic del pulsante. Come stai facendo un setOnClickListener() sul pulsante? Il motivo per cui lo chiedo è: se imposti lo OnClickListener per ciascun pulsante, conosci già la posizione di quel pulsante.

+0

Ho impostato onClick = "myClick" in xml. – brian

+0

e definire un nuovo metodo di myClick – brian

+0

Oops scusa mi sono perso. – curioustechizen

2

Si dovrebbe anche leggere la documentazione per ListView e forse anche dare un'occhiata al tutorial che è disponibile.

Conoscere la documentazione.

5

Si può provare in questo modo.

Fase 1: Nel vostro adattatore personalizzato

@Override 
public view getView(int position, View convertView, ViewGroup parent){ 
.......//Perform your logic 
    convertView.findViewById(R.id.BtnToClick).setTag(position); 
    return convertView; 
} 

Fase 2: In onclick ascoltatore

public void myClick (View v) { 
    LinearLayout vwParentRow = (LinearLayout)v.getParent(); 
    position=(Integer) v.getTag(); 
    } 
+0

Soluzione perfetta! Grazie! – Nick

Problemi correlati