Capturar Haga clic en una lista personalizada en Android
Utilicé un archivo XML personalizado creado bind my db cursor en un ListActivity. Cada elemento del archivo XML tiene 2 botones. Quiero capturar el evento click del botón y la posición en la lista.
Este es mi archivo XML
- ¿Cómo obtengo una ListPopupWindow para trabajar con un adaptador personalizado?
- Android - PullToRefresh ListView siempre vacío
- Resaltar el elemento seleccionado en ListView en Android
- android: ¿cómo conservo los datos en mi arrayadapter / listview cuando cambia la orientación?
- Cómo terminar una actividad desde un adaptador ..?
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="horizontal" android:layout_width="fill_parent" android:layout_height="fill_parent"> <TextView android:id="@+id/smListName" android:paddingTop="2dip" android:paddingBottom="3dip" android:layout_width="wrap_content" android:layout_height="fill_parent" android:textSize="22dip" /> <Button android:id="@+id/smListCompleted" android:layout_width="wrap_content" android:layout_height="fill_parent" android:layout_gravity="right" android:textStyle="bold" android:textColor="#0000ff" /> <Button android:id="@+id/smListNotCompleted" android:layout_width="wrap_content" android:layout_height="fill_parent" android:layout_gravity="right" android:textColor="#ff0000" android:textStyle="bold" /> </LinearLayout>
Y así es como estoy vinculante
db = openOrCreateDatabase("ITC", MODE_PRIVATE, null); Cursor outlets = db.rawQuery("Select s.salesmanid as _id, s.name ...", null); this.setListAdapter(new SimpleCursorAdapter(this, R.layout.salesmanlist, outlets, new String[] { "name", "complete", "incomplete" }, new int[] { R.id.smListName, R.id.smListCompleted, R.id.smListNotCompleted })); db.close();
No estoy usando un adaptador personalizado. Ahora quiero capturar el clic de smListNotCompleted y smListCompleted junto con la posición de la fila.
Gracias
- NullPointerException en el adaptador personalizado getView
- Vista de lista personalizada no responde al evento de clic
- Gestión de la memoria de Android Endless list
- Android Listview mantiene los elementos antiguos después de los cambios del adaptador
- ¿Cuál es la diferencia entre ArrayAdapter, BaseAdapter y ListAdapter?
- ¿Devolver la fila vacía en Custom ArrayAdapter?
- Cambiar la altura y el ancho de EditText en Runtime con alguna animación
- Android Manejo de muchos campos de EditText en un ListView
Usted tendrá que usar un nuevo adaptador. Trate de entender el concepto detrás de esto antes de implementar esto:
class YourNewAdapter extends SimpleCursorAdapter { public View getView(int position, View convertView, ViewGroup parent) { View v = convertView; LayoutInflater vi = (LayoutInflater)c.getSystemService(Context.LAYOUT_INFLATER_SERVICE); v = vi.inflate(id, null); btn = (Button)v.findViewById(R.id.yourbutton); btn.setOnClickListener(YourActivity.this); btn.setId(position); btn.setText("sometext"); v.setLongClickable(true); } return v; } }
Y en su actividad
public void onClick(View v) { if(v.getId() == R.id.yourbutton id) { // do what you want you can also put this on click listener in the getview fn } }
Utilicé un evento de clic en el listadapter y coloqué el id de posición en la etiqueta de botones
Button editButton = view.FindViewById(Resource.Id.editPaymentButton_2) as Button; editButton.Tag = position; editButton.Clickable = true; editButton.Click += editButton_Click;
este es el evento I atado al evento en GetView
void editButton_Click(object sender, EventArgs e) { if (editButtonClicked) { return; } editButtonClicked = true; var button = sender as Button; if (button == null) return; //OnEdit((Entities.PaymentTemplate)GetItem((int)button.Tag)); }
Puesto que se requieren eventos de clic tanto para los botones de la lista personalizada con 2 botones; tendrá que crear un adaptador de lista personalizada en el que puede agregar eventos de clic para los dos botones de forma separada y obtendrá la posición de clic también.
- gcm_defaultSenderId no se puede resolver
- Vista de imagen para ampliar el ancho de la fila de la tabla