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.

Introduzca aquí la descripción de la imagen

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

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!

  • ¿Por qué no AsyncTasks siempre funcionan dentro de un onClickListener?
  • Cómo obtener el evento onClickListener () en la barra de acciones personalizada
  • SetOnPageChangeListener no llama aPageSelected
  • Desactivación de onClickListener para Google Maps
  • ¿Por qué OnClickListener en un ViewHolder no funciona?
  • Cómo poner un oyente onclick dentro de un servicio
  • Android: onClickListener para relativelayout
  • OnClickListener para CardView?
  • OnClickListener del primer elemento de GridView no funciona
  • Firebase UI RecyclerView onClick
  • OnTouch funciona, pero OnClickListener no?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.