Foros del Web » Programando para Internet » Android »

[SOLUCIONADO] Click y LongClick list view

Estas en el tema de Click y LongClick list view en el foro de Android en Foros del Web. Buenas de nuevo, Estoy intentando implementar las acciones de click y long click dentro de una list view. Mi classe extiende de fragment, lo comento ...
  #1 (permalink)  
Antiguo 03/01/2015, 03:34
 
Fecha de Ingreso: noviembre-2012
Mensajes: 136
Antigüedad: 12 años, 1 mes
Puntos: 0
Click y LongClick list view

Buenas de nuevo,

Estoy intentando implementar las acciones de click y long click dentro de una list view.

Mi classe extiende de fragment, lo comento porque no se si tendrá algo que ver, ya que implementar estas 2 funciones no creo que sean muy complicadas.
El problema que tengo que después de implementar las 2 si hago un longClick después de soltar me hace la acción de click, es decir si hago long me hace las 2.

No se donde tengo el problema, este es mi código.
Código Java:
Ver original
  1. @Override
  2.     public View onCreateView(LayoutInflater inflater, ViewGroup container,
  3.             Bundle savedInstanceState) {
  4.        
  5.  
  6.         View rootView = inflater.inflate(R.layout.list, container, false);
  7.        
  8.         ListView lv = (ListView) rootView.findViewById(R.id.LstOpciones);
  9.        
  10.         mFotosAdapter = new GaleriaAdapter(getActivity());
  11.        
  12.          storageDir = Environment.getExternalStoragePublicDirectory(
  13.                 Environment.DIRECTORY_DCIM + DIRECTORY_PICTURES).toString();
  14.        
  15.         // Leer todas las fotos del directoria y a�adirlas al array
  16.         mFotosAdapter.addAllViews(storageDir);
  17.        
  18.         lv.setAdapter(mFotosAdapter);
  19.        
  20.         lv.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
  21.  
  22.             public boolean onItemLongClick(AdapterView<?> arg0, View v,
  23.                     int position, long arg3) {
  24.                 AlertDialog.Builder adb=new AlertDialog.Builder(getActivity());
  25.                 adb.setTitle("Eliminar?");
  26.                 adb.setMessage("Estas seguro que quieres eliminar " + position);
  27.                 final FotoRecord fotoItem = (FotoRecord) mFotosAdapter.getItem(position);
  28.                 adb.setNegativeButton("Cancel", null);
  29.                 adb.setPositiveButton("Ok", new AlertDialog.OnClickListener() {
  30.                     public void onClick(DialogInterface dialog, int which) {
  31.                         mFotosAdapter.remove(fotoItem);
  32.                      
  33.                     }});
  34.                 adb.show();
  35.                 Toast.makeText(getActivity(),String.valueOf(position), Toast.LENGTH_LONG).show();
  36.                 return false;
  37.             }
  38.         });
  39.        
  40.        
  41.        
  42.        
  43.         lv.setOnItemClickListener(new android.widget.AdapterView.OnItemClickListener() {
  44.            
  45.             @Override
  46.             public void onItemClick(AdapterView<?> parent, View view,
  47.                     int position, long id) {
  48.                
  49.                 FotoRecord fotoItem = (FotoRecord) mFotosAdapter.getItem(position);
  50.                 Log.i("StarageDIR: ",storageDir );
  51.                 Log.i("StarageDIR: ",fotoItem.getImageUrl() );
  52.                 File file = new File(fotoItem.getImageUrl());
  53.                 if (file.exists()) {
  54.                     UploaderFoto nuevaTarea = new UploaderFoto(getActivity());
  55.                     nuevaTarea.execute(fotoItem.getImageUrl());
  56.                 }
  57.                 Toast.makeText(getActivity(), "Has pulsado el elemento " + String.valueOf(position) + " de la lista.", Toast.LENGTH_LONG).show();
  58.                
  59.             }
  60.  
  61.         });
  62.        
  63.         return rootView;
  64.     }

En algunos sitios comentan que para que funcione hay que poner en el xml correspondiente la propiedad android:longClickable="true", pero si lo pongo luego el click no me funciona.

Alguna ayudita! Gracias.
  #2 (permalink)  
Antiguo 03/01/2015, 04:29
Avatar de ipraetoriux  
Fecha de Ingreso: abril-2010
Ubicación: ipraetoriux.com
Mensajes: 1.125
Antigüedad: 14 años, 7 meses
Puntos: 155
Respuesta: Click y LongClick list view

El problema lo tenes en el metodo onItemLongClick, tenes que retornar TRUE, con ello indicas que el evento ya ha sido capturado y el listener para de buscar otros eventos. Como lo tenes ahora, o sea retornando FALSE, indicas que el evento ha sido capturado pero el listener sigue buscando otros eventos, y por ello te lanza el click regular junto al longClick.
  #3 (permalink)  
Antiguo 03/01/2015, 04:33
 
Fecha de Ingreso: noviembre-2012
Mensajes: 136
Antigüedad: 12 años, 1 mes
Puntos: 0
Respuesta: Click y LongClick list view

Gracias, resuelto.
  #4 (permalink)  
Antiguo 03/01/2015, 06:10
Avatar de ipraetoriux  
Fecha de Ingreso: abril-2010
Ubicación: ipraetoriux.com
Mensajes: 1.125
Antigüedad: 14 años, 7 meses
Puntos: 155
Respuesta: Click y LongClick list view

Marca como resuelto el tema. Saludos

Etiquetas: androi, list, opciones, view
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 21:06.