Acabo de empezar a android y me estoy quedando con algunos problemas.

He creado un ListView que se rellena a partir de una base de datos.

Cada fila tiene un botón para eliminar el elemento de la lista y la base de datos.

Soy capaz de conectar un detector de eventos para el botón, pero no he sido capaz de determinar la coincidencia de registro de base de datos para ser eliminados.

Mi clase se muestra a continuación

public class FeedArrayAdapter extends ArrayAdapter<Feed> implements OnClickListener
{
    private ARssEReaderDBAdapter dba;
    private String TAG = "FeedArrayAdapter";

    public FeedArrayAdapter(Context context, int textViewResourceId, List<Feed> items)          {
    super(context, textViewResourceId, items);
    Log.w(TAG, "List");


    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        Log.w(TAG, "getView");
        View v = convertView;
        if (v == null) {
            LayoutInflater vi = (LayoutInflater)getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        v = vi.inflate(R.layout.feedlistrow, null);
    }
    Feed feed = getItem(position);
    if (feed != null) {
        TextView title = (TextView)v.findViewById(R.id.TextView01);
        if (title != null) {
            title.setText(feed.getTitle());
        }
        Button btnDelete = (Button)v.findViewById(R.id.btnDelete);
        btnDelete.setOnClickListener(this); //btnDeleteFeedListener
    }
    return v;
}

public void onClick(View v) {
    Log.w(TAG, "something got clicked: ");
}

Entonces, ¿cómo puedo pasar la base de datos de ID de registro para el controlador de modo que se puede utilizar el adaptador de base de datos para eliminarlo?

InformationsquelleAutor Richard | 2010-08-12

2 Comentarios

  1. 39

    Debe almacenar el ID del registro en la Etiqueta, llamada setTag() en su punto de vista, y para leer en el onclick de la llamada getTag()

  2. 22

    Crear un interior de la clase que implementa OnClickListener y, a continuación, pasar a la posición de la variable en el constructor.

     private Class MyClickListener implements OnClickListener {
    
        private int position;
    
        public MyClickListener(int position) {
           this.position = position;
        }
    
        public void onClick(View v) {
           System.out.println("position " + getPosition() + " clicked.");
        }
    
        public int getPosition() {
          return position;
        }
    
     }
    • Gracias por sus respuestas, la Etiqueta de opciones que parecían ser los más fáciles de implementar, y hace todo lo que quiero hacer 🙂 Gracias de nuevo
    • Me gusta esta respuesta porque mi setTag() ya estaba siendo utilizado para algo más.
    • Esto funcionó de maravilla como yo necesitaba pasar más de un valor a un clic de escucha! Gracias
    • setTag(int clave, etiqueta de Objeto) puede ser usado para pasar más de un valor.

Dejar respuesta

Please enter your comment!
Please enter your name here