AdapterView不支持removeView(View)

我想在单击ImageView时从listView中删除某一行。 我的listview看起来像这样: 在此处输入图像描述

我希望在单击最后一个图像时删除该行。 这是我的适配器

public class UserItemAdapter extends ArrayAdapter { private ArrayList photos; public UserItemAdapter(Context context, int textViewResourceId, ArrayList 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

我的mystake在哪里? 任何想法?

您不必删除View但可以删除照片列表中的项目。

 photos.remove(yourPhoto); notifyDataSetChanged(); 

此外,你应该使用ViewHolders ,谷歌有很多关键。 希望这会帮助你。

在onItemClick(AdapterView父,View视图,int位置,长id)中使用

parent.removeViewInLayout(view);

代替

 parent.removeViewAt(position); 

您应该在UI线程上尝试它,以便它立即工作:

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