RemoveView (View) не поддерживается в AdapterView

Я хочу удалить определенную строку из спискаView при щелчке ImageView. Мой список выглядит следующим образом: Введите описание изображения здесь

Я хочу, чтобы при нажатии последнего изображения удалялась эта строка. Вот мой адаптер:

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; } } 

Я попытался удалить строку, используя следующую команду:

 listView.removeView(v); myadapter.notifyDataSetChanged(); 

И я получаю ошибку: ERROR AndroidRuntime java.lang.UnsupportedOperationException: removeView(View) is not supported in AdapterView

Где мой мистик? Есть идеи?

Вам не нужно удалять View но удалять элементы в списке фотографий.

 photos.remove(yourPhoto); notifyDataSetChanged(); 

Кроме того, вы должны использовать ViewHolders , в Google много уловок. Надеюсь, что это поможет вам.

В onItemClick (родитель AdapterView, вид View, int position, long id) используют

parent.removeViewInLayout(view);

вместо

 parent.removeViewAt(position); 

Вы должны попробовать его в потоке пользовательского интерфейса, чтобы он работал мгновенно:

  listView.remove(position); runOnUiThread(new Runnable() { public void run() { adapter.notifyDataSetChanged(); } });