studio saber que presiono presionado fue cuando con como botones boton atributo android listview button

android - saber - Pasar un parámetro a onclick oyente en un botón en una fila de vista de lista



onclick android (2)

Acabo de iniciar Android y tengo algunos problemas.
ListView un ListView que se llena desde una base de datos.
Cada fila tiene un botón para eliminar el elemento de la lista y la base de datos.

Puedo conectar un detector de eventos al botón, pero no he podido determinar el registro de la base de datos correspondiente que se eliminará.

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 el ID del registro de la base de datos al controlador para que pueda usar el adaptador de la base de datos para eliminarlo?


Cree una clase interna que implemente OnClickListener y luego pase la variable de posición 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; } }


Debe almacenar la ID del registro en la etiqueta, llamar a setTag() en su vista y leer en la llamada onclick getTag()