Quiero eliminar una determinada fila de un listView cuando se hace clic en un ImageView. Mi lista de vista se ve así: removeView (Ver) no es compatible con AdapterView
Quiero que cuando se haga clic en la última imagen para eliminar esa fila. Aquí está mi adaptador:
public class UserItemAdapter extends ArrayAdapter<Photos.Record> {
private ArrayList<Photos.Record> photos;
public UserItemAdapter(Context context, int textViewResourceId, ArrayList<Photos.Record> photos) {
super(context, textViewResourceId, photos);
this.photos = photos;
}
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
View v = convertView;
if (v == null) {
LayoutInflater vi = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
v = vi.inflate(R.layout.photorowlist, null);
v.setClickable(true);
v.setFocusable(true);
}
Photos.Record user = photos.get(position);
if (user != null) {
TextView photo_name = (TextView) v.findViewById(R.id.photoname);
if (photo_name != null) {
photo_name.setText(user.photo_name);
}
}
v.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View view) {
//Toast.makeText(view.getContext(), "Clicked", Toast.LENGTH_SHORT).show();
ImageView delete_photo = (ImageView) view.findViewById(R.id.deletephoto);
delete_photo.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View v) {
Toast.makeText(Photos.this, "Delete Button Clicked", Toast.LENGTH_SHORT).show();
listView.removeView(v);
myadapter.notifyDataSetChanged();
}});
}
});
return v;
}
}
public class Record {
public String photo_name;
public Record(String photo_name) {
this.photo_name = photo_name;
}
}
Me trataron de eliminar la fila usando esto:
listView.removeView(v);
myadapter.notifyDataSetChanged();
y me da el error: ERROR AndroidRuntime java.lang.UnsupportedOperationException: removeView(View) is not supported in AdapterView
¿Dónde está mi mystake? ¿Alguna idea?
No, pero creo que está haciendo lo contrario. No debe escribir su ClickListener en su adaptador sino en su actividad (o fragmento). Luego configura un OnItemClickListener para su vista y borra su foto aquí. No estoy seguro de que sea claro, pero deberían echarle un vistazo al [blog de Cyril Mottier] (http://android.cyrilmottier.com/?p=525) – AMerle
Intenté con esa solución (eliminando datos de la lista de arrays del adaptador) y luego refrescante) pero no funcionó. Se abrió otro problema aquí: http://stackoverflow.com/questions/38250987/removing-an-item-from-the-dropdown-list-of-a-baseadapter –