¿Cómo puedo atrapar dicho evento? onCreateContextMenu
es bastante similar, pero no necesito menú.¿Cómo manejar el toque largo en el elemento ListView?
Respuesta
Es difícil saber lo que necesita lograr. Pero mi suposición es que desea realizar alguna acción sobre el elemento que recibe el clic largo. Para eso, tiene dos opciones:
.
listView.setOnItemLongClickListener (new OnItemLongClickListener() {
public boolean onItemLongClick(AdapterView parent, View view, int position, long id) {
//do your stuff here
}
});
- si va a crear un adaptador personalizado, añadir un View.OnLongClickListener al crear la vista en el método Adapter#getView(...)
Agregue una vista personalizada personalizada View.OnLongClickListener a sus vistas. Puede ser compartido por muchos casos, a continuación, puede utilizar el parámetro de
onLongClick(View v)
saber qué punto de vista se ha hecho clic y reaccionar en consecuencia.
Saludos, Stéphane
Would funcionalidad de desplazamiento/aventura normal de este desastre de la ListView? –
Extraño, pero tampoco funciona. Lo hago: 'public class BridgesCloseActivity extends ListActivity {... OnLongClickListener longClickListener; ... longClickListener = new OnLongClickListener() { \t public boolean onLongClick (Ver v) { \t \t Log.i ("", Integer.toString (v.getId())); \t \t return true; \t} }; ' –
@LA_ Es posible que necesite que OnDown devuelva true. –
Normalmente, usted asocia un clic largo en una vista de lista con un menú contextual, que se puede hacer mediante el registro de la vista de lista con Activity.registerForContextMenu(View view)
para dar una experiencia de interfaz de usuario más consistente con otra aplicaciones de Android.
y luego reemplazar el método onContextItemSelected en su aplicación como esta:
@Override
public void onCreate(Bundle savedInstanceState) {
listView = (ListView) findViewById(R.id.your_list_view);
registerForContextMenu(listView);
}
@Override
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) {
super.onCreateContextMenu(menu, v, menuInfo);
menu.setHeaderTitle(getString(R.string.menu_context_title));
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.your_context_menu, menu);
}
@Override
public boolean onContextItemSelected(MenuItem item) {
AdapterContextMenuInfo info = (AdapterContextMenuInfo) item.getMenuInfo();
switch (item.getItemId()) {
case R.id.some_item:
// do something useful
return true;
default:
return super.onContextItemSelected(item);
}
La posición en la lista también se llevó a cabo en info.id
Si lo que desea es capturar el evento click de largo, entonces yo piensa lo que Snicolas está sugiriendo que funcionaría.
no funciona. Parece que no tengo menú de contexto, nunca se llama a onContextItemSelected. –
He actualizado el ejemplo de código. ¿Llamaste a 'registerForContextMenu (listView)'? Como han dicho otros, ¿está tratando de lograr algo cuando hace clic largo en el elemento o está tratando de obtener un menú contextual para el elemento en su vista de lista? –
Estoy tratando de comenzar otra actividad, cuando se hace clic en el elemento por mucho tiempo. Por lo tanto, no es necesario mostrar el menú contextual. 'RegisterForContextMenu (listView)' está ahí. –
//Deleted individual cart items
//on list view cell long press
cartItemList.setOnItemLongClickListener (new OnItemLongClickListener() {
@SuppressWarnings("rawtypes")
public boolean onItemLongClick(AdapterView parent, View view, final int position, long id) {
final CharSequence[] items = { "Delete" };
AlertDialog.Builder builder = new AlertDialog.Builder(context);
builder.setTitle("Action:");
builder.setItems(items, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int item) {
cart = cartList.get(position);
db.removeProductFromCart(context, cart);
new AlertDialog.Builder(context)
.setTitle(getString(R.string.success))
.setMessage(getString(R.string.item_removed))
.setPositiveButton("Done", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
Intent intent = new Intent(CartDetailsActivity.this, HomeScreen.class);
startActivity(intent);
}
})
.show();
}
});
AlertDialog alert = builder.create();
alert.show();
//do your stuff here
return false;
}
});
- 1. detectando un toque largo en el iPhone
- 2. ¿Cómo puedo deseleccionar el elemento en ListView?
- 3. ¿Cómo resaltar el elemento seleccionado en ListView?
- 4. Cómo deshabilitar el toque prolongado en UIWebView?
- 5. Obtiene el elemento más largo en Dict
- 6. ¿Cómo obtener el elemento seleccionado de ListView?
- 7. Android: cómo seleccionar el elemento ListView programmatically
- 8. Cómo obtener el elemento bajo el cursor en WPF ListView
- 9. Deshabilitar el foco del elemento en ListView
- 10. JavaFX selecciona el elemento en ListView
- 11. ¿Cómo establecer el color de resaltado para el elemento ListView?
- 12. android listview obtener el elemento seleccionado
- 13. ¿Cómo habilitar el toque múltiple en cocos2d?
- 14. establecer el foco en cualquier elemento de listview en android
- 15. Android - Cómo manejar dos toque de un dedo
- 16. Android ListView y OnClickListener: Cómo obtener el elemento seleccionado
- 17. ListFragment cómo obtener el listView?
- 18. Obtener el elemento seleccionado en ListView win32 API
- 19. Eval() para el elemento actual en asp: ListView
- 20. simulando el toque usando ADB
- 21. ListView elemento animado único
- 22. ¿Cómo calzo el título largo?
- 23. Cómo manejar mejor el gesto fling para Android ListActivity
- 24. elemento listview androide altura
- 25. Android: separador personalizado (o incluso elemento) en ListView depening en el contenido del elemento
- 26. ¿Evento disparado cuando el elemento se agrega a ListView?
- 27. Android: cómo ocultar un elemento de ListView
- 28. WPF ListView Seleccionar programáticamente elemento
- 29. UIButton - En el toque cambiar la imagen
- 30. Dibujar una línea con el dedo toque en el iPhone
¿podría aclarar cómo asignar OnItemLongClickListener a mi ListView? Gracias de antemano. –
@LA_ ver arriba. – Aleadam
gracias, funciona perfectamente. ¿Cómo puedo obtener un valor de base de datos particular, asociado con el elemento al que se hace clic con mucho tiempo? Debería ser algo como 'this.getListAdapter(). GetItem (position)'? –