2012-03-22 29 views

Respuesta

-4

Puede configurar un oyente onItemClick para su vista de lista a través de

listView.setOnClickListener(new OnClickListener() { 
    @Override 
    public void onClick(View v) { 
     //here you do something 
    } 
}); 
+3

La pregunta es "¿Cómo se puede pulsar el elemento ListView programáticamente?" y no para obtener el evento de clic en el elemento de la lista. – Zeba

2

Si lo necesita para propósitos de prueba, entonces se puede utilizar Robotium (http://code.google.com/p/robotium/).

También puede lograr lo que quiera llamando al método onClick del ClickController con los parámetros correctos.

+0

Pero, ¿cómo se usa Robotium para hacer esto? –

+0

Pida a robotium que toque el texto dentro del elemento de la lista. –

11

Si desea hacer clic/tap/seleccione tercera elemento de la lista a continuación.

listView.performItemClick(listView.getAdapter().getView(3, null, null), 3, listView.getItemIdAtPosition(3)); 

Esto funcionó perfectamente para mí.

56
mList.performItemClick(
    mList.getAdapter().getView(mActivePosition, null, null), 
    mActivePosition, 
    mList.getAdapter().getItemId(mActivePosition)); 

Donde mActivePosition es su posición de clic!

+0

Nice work mahn. :) –

+3

Esto realmente creará una nueva vista solo así que performItemClick funcionará, sí, funcionará, pero esta no será la misma vista que se pretendía, getView en el adaptador es engañoso, realmente crea una vista, y listView lo está usando en Para llenar las vistas y reciclarlas – ndori

+0

Esto no creará una vista. 'mList.performItemClick (mList.getChildAt (mActivePosition), mActivePosition, mList.getAdapter(). getItemId (mActivePosition));' – Arst

3

etiqueta Asignar el adaptador a cada View y findviewByTag() esto funcionó para mí:

listView.performItemClick(listView.findViewWithTag(listView.getAdapter().getItem(selectedIndex)), selectedIndex, listView.getAdapter().getItemId(selectedIndex)); 

también se refieren this answer.

Cuestiones relacionadas