Eliminación de un elemento de ListView dentro de un adaptador personalizado
Tengo un elemento personalizado listview que incluye un botón "quitar". He creado un adaptador personalizado llamado LazyListAdapter
que extiende BaseAdapter
. Dentro del método getView que anula, establezco el método onclick de este botón de la siguiente manera:
@Override public View getView(final int pos, View convertView, ViewGroup parent) { View v = convertView; // Some other things... ImageButton removeFav = (ImageButton) v.findViewById(R.id.removeFavorites); removeFav.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // I delete the object from Parse database here, // Therefore I want the view to disappear here } }
¿Cómo puedo borrar o de alguna manera ocultar la vista correspondiente usando un código dentro de este método onclick? ¿O debo cambiar mi enfoque?
- Onclicklistner no funciona en el listview de fragmentos
- Adaptador personalizado para la vista de lista
- ¿Cómo mostrar el número múltiple de TextViews dentro de cada fila en ListView?
- Android ListView problemas en Android 2.X
- Adaptador personalizado que no muestra ningún dato en ListView
Muchas gracias de antemano.
- MvxAdapter personalizado - Métodos de reemplazo que no se llaman
- Cómo obtener datos de adaptador personalizado en ListView?
- ¿Cómo actualizar la lista de adaptadores personalizados al instante en Android?
- El adaptador personalizado de Android no funciona correctamente para la lista de chat
- ¿Cómo puede inflar una presentación que contenga listview en un cuadro de diálogo de alerta?
- Chris Banes PullToRefreshListView con el error del adaptador personalizado
- Tire para actualizar y cargar en listview
- Cómo manejar onCheckedChangeListener para un RadioGroup en un adaptador ListView personalizado
Prueba esto
@Override public View getView(final int pos, View convertView, ViewGroup parent) { View v = convertView; // Some other things... ImageButton removeFav = (ImageButton) v.findViewById(R.id.removeFavorites); removeFav.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // After you delete the object from Parse database here, notifyDataSetChanged(); } }
Intente usar parent.removeViewAt (posición).
Simplemente puede quitar un elemento dentro del método getview como en el ejemplo
@Override public View getView(final int position, View convertView, ViewGroup parent) { ViewHolder viewHolder; if (convertView == null) { LayoutInflater inflater = (LayoutInflater) context .getSystemService(Context.LAYOUT_INFLATER_SERVICE); convertView = inflater.inflate(R.layout.list_row, null, false); viewHolder = new ViewHolder(); viewHolder.img = (ImageView) convertView.findViewById(R.id.img); convertView.setTag(viewHolder); } else { // we call the view created before to not create a view in each time viewHolder = (ViewHolder) convertView.getTag(); } final int imgId = imageId.get(position); viewHolder.img.setImageResource(imgId); viewHolder.img.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Toast.makeText(context, "Clicked " + imgId, Toast.LENGTH_SHORT) .show(); } }); // Create a generic swipe-to-dismiss touch listener. viewHolder.img.setOnTouchListener(new SwipeDismissTouchListener( viewHolder.img, null, new SwipeDismissTouchListener.DismissCallbacks() { @Override public boolean canDismiss(Object token) { return true; } @Override public void onDismiss(View view, Object token) { Log.d(TAG, "Image ıd" + imgId); imageId.remove(position); remove(position); notifyDataSetChanged(); } })); return convertView; }