11

ImageView をクリックしたときに listView から特定の行を削除したい。私のリストビューは次のようになります: ここに画像の説明を入力

最後の画像をクリックしてその行を削除したときにそれが必要です。これが私のアダプターです:

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

私のミスはどこですか?何か案が?

4

3 に答える 3

25

を削除する必要はありませんがView、写真リストの項目を削除してください。

photos.remove(yourPhoto);
notifyDataSetChanged();

さらに、使用する必要ViewHoldersがあります。Google にはたくさんのツッツがあります。これがあなたを助けることを願っています。

于 2012-07-11T08:09:25.503 に答える
11

onItemClick(AdapterView parent, View view, int position, long id) で使用

parent.removeViewInLayout(view);

それ以外の

parent.removeViewAt(position);
于 2013-12-09T14:45:19.040 に答える
0

瞬時に機能するように、UIスレッドで試してみてください。

     listView.remove(position);
        runOnUiThread(new Runnable() {
            public void run() {
                adapter.notifyDataSetChanged();
            }
        });
于 2012-07-11T08:43:28.507 に答える