jueves, 15 de noviembre de 2012

Custom OnItemClickListener para elementos del ListView

En la entrada anterior realicé un menú contextual para los items de un ListView. El caso es que en mi aplicación quiero que haya una opción por defecto (que también está en el menú contextual) para las pulsaciones simples.

Encontré un post muy interesante que trataba el tema (en inglés), y otro post adaptado del anterior en español.

En mi caso lo he adaptado a mis necesidades, puesto que mis opciones del ListView se leen de base de datos.

A continuación mi código de ejemplo


private void initActivity(){
        setContentView(R.layout.main);
        
        registerForContextMenu(getListView());  
        
        // Habilito click simple en la lista de elementos
        // Hack by http://stackoverflow.com/questions/4852307/listview-onclick-goes-to-a-new-activity
        //libreyextremo.blogspot.com.es/2012/03/tutorial-android-parte-13-navegacion.html
        ListView lv = (ListView)findViewById(android.R.id.list);
        final Intent activity = new Intent(this,CTaskActivity.class);
        OnItemClickListener myclickListView = new OnItemClickListener()
        {
         public void onItemClick(AdapterView parent, View view,int position, long id){
          
           long id_proyecto = getIdProjectByPositionListView(position);
           activity.putExtra("id_proyecto", id_proyecto);
           
           startActivity(activity);
             
         }
         
        };

        setListAdapter(new ArrayAdapter(context,android.R.id.list));
        lv.setOnItemClickListener(myclickListView);
        
     // Cargo los proyectos en el sistema
        showAllProjects();
 }

El código es bastante sencillo, simplemente se trata de hacer un OnItemClickListener persnalizado, asignarlo al ListView y después cargar los items. Ojo, que si se cargan antes los items no se mostrará nada en pantalla.

Por último, initActivity() es un método que llamo desde onCreate() de la actividad.

Saludos.

4 comentarios:

  1. Hola, Carlos

    Muchas gracias por tu comentario en mi blog y por tu consejo de usar syntax highlighter.

    Llevaba tiempo buscando una herramienta asi y no había encontrado ninguna que fuese como yo queria. ¡Ahora podré mejorar los artículos y dejarlos como a mi me gusta!

    Si te parece bien añadiré tu blog a la lista de los blogs que recomiendo.

    Un saludo, Carlos

    ResponderEliminar
    Respuestas
    1. Ok, por mi perfecto.
      Tu blog me resultó muy útil y me ayudó con este tema.
      Saludos.

      Eliminar
  2. Una pregunta, como puedo llamar a una actividad al momento de hacer click en el item del listview????

    ResponderEliminar
    Respuestas
    1. Hola Jorge, precisamente eso es lo que está haciendo este ejemplo :D
      En final Intent activity = new Intent(this,CTaskActivity.class); he definido la actividad que se llamará.

      startActivity(activity); <-- Es la línea que llama a la nueva actividad cuando se hace click sobre el item.

      Saludos.


      Eliminar

Related Posts Plugin for WordPress, Blogger...