Pregunta

¿Cómo escucho a hacer clic en un evento ListView?

Esto es lo que tengo ahora

ListView list = (ListView)findViewById(R.id.ListView01);  
...  
list.setAdapter(adapter);  

Cuando hago lo siguiente

list.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {  
   public void onItemSelected(AdapterView parentView, View childView, 
                                                         int position, long id) 
   {  
       setDetail(position);  
   }

   public void onNothingSelected(AdapterView parentView) {  

   }  
});  

No parece que hacer nada al hacer clic.
Y todos los código de vivir dentro de una clase que amplíe la actividad.

¿Fue útil?

Solución

En la vista de lista, el uso setOnItemClickListener

Otros consejos

objeto ListView Supongamos que es lv, hacer lo siguiente -

lv.setClickable(true);
lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {

  @Override
  public void onItemClick(AdapterView<?> arg0, View arg1, int position, long arg3) {

    Object o = lv.getItemAtPosition(position);
    /* write you handling code like...
    String st = "sdcard/";
    File f = new File(st+o.toString());
    // do whatever u want to do with 'f' File object
    */  
  }
});

Es necesario establecer la vista inflada "con enlace" y "capaz de escuchar a los eventos de click" en el método () getView clase adaptador.

convertView = mInflater.inflate(R.layout.list_item_text, null);
convertView.setClickable(true);
convertView.setOnClickListener(myClickListener);

y declarar el detector de clics en su ListActivity de la siguiente manera:

public OnClickListener myClickListener = new OnClickListener() {
public void onClick(View v) {
                 //code to be written to handle the click event
    }
};

Esto es válido sólo cuando se está personalizando el adaptador extendiendo BaseAdapter.

Consulte los ANDROID_SDK / muestras / ApiDemos / src / com / example / android / apis / view / List14.java para más detalles

Las dos respuestas son correctas antes que la mía - se puede utilizar OnItemClickListener

.

Es bueno tener en cuenta que la diferencia entre OnItemClickListener y OnItemSelectedListener, mientras suenan sutil, de hecho es significativo, ya que la selección de elementos y el enfoque están relacionados con el modo de toque de su AdapterView.

Por defecto, en el modo de contacto, no hay ninguna selección y enfoque. Puede echar un vistazo aquí para más información sobre el tema.

Esta solución es muy minimalista y no estropear su código.

list_item.xml asignar el atributo androide (NO Listview!): OnClick como esto:

<RelativeLayout android:onClick="onClickDoSomething">

y luego en su llamada actividad de este método:

public void onClickDoSomething(View view) {
   // the view is the line you have clicked on
}

Usted tiene que usar setOnItemClickListener alguien dijo.
El código debe ser como este:

listView.setOnItemClickListener(new OnItemClickListener() {
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
        // When clicked, show a toast with the TextView text or do whatever you need.
        Toast.makeText(getApplicationContext(), ((TextView) view).getText(), Toast.LENGTH_SHORT).show();
    }
});

En primer lugar, la clase tiene que implementar el clic listener:

implements OnItemClickListener

A continuación, establezca un oyente al ListView

yourList.setOnItemclickListener(this);

Y, por último, crear el método de clic:

@Override
public void onItemClick(AdapterView<?> parent, View view, int position,
long id) {
Toast.makeText(MainActivity.this, "You Clicked at " +countries[+ position], Toast.LENGTH_SHORT).show();
}

se puede tomar un código de aspecto y descarga aquí

Uso setOnItemClickListener () de la API en su actividad. A continuación se presenta la muestra.

listView.setOnItemClickListener(new AdapterView.OnItemClickListener(){

@Override
public void onItemClick(AdapterView<> parent, View view, int position, long id)
{
     // your code here.
}

});

En Kotlin, añadir un oyente a su Listview tan simple como Java

your_listview.setOnItemClickListener { parent, view, position, id ->   

    Toast.makeText(this, position, Toast.LENGTH_SHORT).show()

 }
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top