OnClick listener a una imagen ListView – Android
Tengo un ListView
con una imagen sobre el lado derecho. Y quería realizar un evento de escucha onClick
haciendo clic en la imagen en el ListView
. Por favor, consulte la imagen para referencia.
- Creación de la caja de conmutación onClickListener para TextView
- ¿Cómo cambiar la imagen del botón de encendido a apagado y viceversa al hacer clic?
- Fragmento implementa OnClickListener
- Android: Configurar onClickListener en una parte del texto de un TextView - Problema
- Invocar una llamada de escucha programáticamente en android
Conozco las implementaciones de escuchas básicas de OnClick
, pero esto me parece un poco complicado: P
Olvidé mencionar, haciendo clic en el ListView
real se disparará una nueva actividad, por lo que tengo que mantener los dos esquemas.
listView.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { eventsData.remove(id); cursor.requery(); } });
El código anterior realiza una eliminación haciendo clic en cualquier elemento de lista eventsData.remove(id);
Es un ayudante de base de datos para ejecutar esta tarea. Como dije ahora que necesito un método para realizar este mismo proceso presiona haciendo clic en la imagen, no todo el elemento de lista, quiero que el elemento de lista para hacer alguna otra acción más adelante.
Espero que ahora estoy un poco claro.
La solución:
Si alguien se encuentra con el mismo tipo de situación, a continuación, aquí es el código completo para el adaptador.
class CustomAdapter extends ArrayAdapter<String> { CustomAdapter() { super(Activity.this, R.layout.row, R.id.label, items); } public View getView(final int position, View convertView, ViewGroup parent) { View row=super.getView(position, convertView, parent); deleteImg=(ImageView)row.findViewById(R.id.icon); deleteImg.setImageResource(R.drawable.delete); deleteImg.setOnClickListener(new OnClickListener() { String s = items[position]; @Override public void onClick(View v) { Toast.makeText(context, s, Toast.LENGTH_SHORT).show(); } }); return(row); }
}
Sé que la codificación es un poco malo, así que tenga conmigo, sólo quiero mostrar el proceso real que es.
Funciona para mi
- Botón de imagen de Android Haga clic en no funciona en algunos teléfonos (Moto g2, Galaxy s2)
- Botón de forma personalizada de Android
- Cajón de navegación OnItemClickListener
- Cómo desmarcar un elemento en gridview en segundo clic en android?
- Cómo implementar OnTouch Listener en XML
- Establecer OnClick Listener en el botón dentro de la vista de lista en android
- Android OnClickListener no disparar para el botón en Layout independiente
- RecyclerView onItemClicked devolución de llamada
Usted debe hacerlo en su Adapter
no en la Activity
.
yourImg.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // things you want to do } });
Crear una interfaz para la comunicación desde el adaptador a la actividad
public interface ListenerActivity { public void Remove(); }
En tu adaptador Clase:
class CustomAdapter extends ArrayAdapter<String> { ListenerActivity listener; CustomAdapter(YourActivity obj) { super(Activity.this, R.layout.row, R.id.label, items); listener=obj; } public View getView(final int position, View convertView, ViewGroup parent) { ImageId.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { listener.Remove(); } }); }
En su actividad:
class MyActivity extends Activity implements ListenerActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); } @Override public void Remove() { //Do your remove functionality here } }
Agregando a la última respuesta y reering a esta respuesta, agregué un cierto código para refrescar la opinión después de suprimir un artículo u otras acciones:
//in your adapter you have to get list of items: public CartListAdapter(Context context, int resourceId, List<CartItemModel> items) { super(context, resourceId, items); this.context = context; this.items= items; } //after that you have to set a listner on the imageView like this: public View getView(int position, View convertView, ViewGroup parent) { holder.imageViewDelete.setOnClickListener(new imageViewClickListener(position)); // some other lines code ... // here we get the item to remove rowItem= getItem(position); } //and here the definition of the listner: private class imageViewClickListene implements OnClickListener { int position; public imageViewClickListene( int pos) { this.position = pos; } public void onClick(View v) { // here we remove the selected item items.remove(rowItem); // here we refresh the adapter CartListAdapter.this.notifyDataSetChanged(); } }
Funciona para mí, disfruta!
- Parse.com – Sonido personalizado de notificación push de Android
- ¿Cuál es la manera más clara de nombrar recursos en Android?