2012-02-01 13 views
8

Uso ListView para mostrar varios elementos. Mi row.xml de la siguiente manera:Obtener una posición en 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> 

Y defino myClick en la Actividad de la siguiente manera:

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

¿Cómo saber la posición que boton hacer clic? La posición significa lo mismo que el método onListItemClick.

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

Esta pregunta se ha hecho antes, por favor, consultar las preguntas antes destino. – JoxTraex

Respuesta

33

Trate

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

¡Muchas gracias por eso! ¿Por qué esa información está tan oculta? – user1862770

1

Si la posición en el onListItemClick es igual que la posición del elemento hace clic en la lista.

+0

Me refiero a cómo obtener la posición en myClick método – brian

1

Si entiendo su pregunta correctamente, tiene un botón en cada fila de ListView, y desea saber qué fila recibió el clic del botón. ¿Cómo está haciendo un setOnClickListener() en el botón? La razón por la que pregunto esto es: si está configurando el OnClickListener para cada botón, ya conoce la posición de ese botón.

+0

He configurado onClick = "myClick" en xml. – brian

+0

y define un nuevo método de myClick – brian

+0

Vaya, lo siento, me lo perdí. – curioustechizen

2

También debería leer la documentación para ListView y tal vez incluso echar un vistazo al tutorial que está disponible.

Conozca su documentación.

5

Puede intentarlo de esta manera.

Paso 1: En su adaptador personalizado

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

Paso 2: En onclick oyente

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

¡La solución perfecta! ¡Gracias! – Nick

Cuestiones relacionadas