为了账号安全,请及时绑定邮箱和手机立即绑定

如何删除视图寻呼机的特定位置

如何删除视图寻呼机的特定位置

慕姐8265434 2022-09-28 16:41:38
我想在其中添加一些图像,一切都很好(图像添加),但是当我想删除图像时,它正在工作并删除图像,但它删除了最后一个图像而不是我想删除的特定图像,我不知道如何获取特定图像的位置并删除它。public class PhotoAdd_Adapter extends PagerAdapter {    private LayoutInflater inflater;    private Context context;    ArrayList<String> mylist;    SharedPreferences sharedPreferences;    JSONArray responsearray = null;    private static final String TAG_PHOTO_ONE = "Gallery_Full";    HashMap<String, String> get;    LinearLayout addimages;    String ImageID;    ProgressBar progressBar;    String finalimgpath, imageId;    ImageView imageView, deletebtn;    TextView no_image, p_id;    private FragmentManager f_manager;    int delPosition;    public PhotoAdd_Adapter(Context context, ArrayList<String> mylist, FragmentManager f_manager) {        this.f_manager = f_manager;        this.context = context;        this.mylist = mylist;        inflater = LayoutInflater.from(context);        sharedPreferences = context.getSharedPreferences(context.getString(R.string.prefs), 0);    }    @Override    public void destroyItem(ViewGroup container, int position, Object object) {        container.removeView((View) object);    }    @Override    public int getCount() {        return mylist.size();    }    @Override    public int getItemPosition(@NonNull Object object) {        if(mylist.contains(object)){            return mylist.indexOf(object);        }else {            return POSITION_NONE;        }//        return super.getItemPosition(object);//        return PagerAdapter.POSITION_NONE;    }    
查看完整描述

2 回答

?
慕的地10843

TA贡献1785条经验 获得超8个赞

您的问题是视图寻呼机在删除图像任务完成之前重新加载。因此,将加载相同的图像集,但由于列表大小已被修改,因此不会加载最后一个图像。

解决方案:等待删除操作完成,然后再在视图页程序上调用通知数据集更改()


查看完整回答
反对 回复 2022-09-28
?
湖上湖

TA贡献2003条经验 获得超2个赞

我已经更新了你的代码,只是试试下面的代码:


 public class PhotoAdd_Adapter extends PagerAdapter {

        private LayoutInflater inflater;

        private Context context;

        ArrayList<String> mylist;

        SharedPreferences sharedPreferences;

        JSONArray responsearray = null;

        private static final String TAG_PHOTO_ONE = "Gallery_Full";

        HashMap<String, String> get;

        LinearLayout addimages;

        String ImageID;

        ProgressBar progressBar;

        String finalimgpath, imageId;

        ImageView imageView, deletebtn;

        TextView no_image, p_id;

        private FragmentManager f_manager;

        int delPosition;


        public PhotoAdd_Adapter(Context context, ArrayList<String> mylist, FragmentManager f_manager) {

            this.f_manager = f_manager;

            this.context = context;

            this.mylist = mylist;

            inflater = LayoutInflater.from(context);

            sharedPreferences = context.getSharedPreferences(context.getString(R.string.prefs), 0);

        }

        @Override

        public void destroyItem(ViewGroup container, int position, Object object) {

            container.removeView((View) object);

        }

        @Override

        public int getCount() {

            return mylist.size();

        }

        @Override

        public int getItemPosition(@NonNull Object object) {

            if(mylist.contains(object)){

                return mylist.indexOf(object);

            }else {

                return POSITION_NONE;

            }

    //        return super.getItemPosition(object);

    //        return PagerAdapter.POSITION_NONE;

        }

        @Override

        public Object instantiateItem(ViewGroup view, final int position) {

            View imageLayout = inflater.inflate(R.layout.photoadd_adapter, view, false);

            assert imageLayout != null;

            imageView = imageLayout.findViewById(R.id.image_adapter);

            deletebtn = imageLayout.findViewById(R.id.deletebtn);

            p_id = imageLayout.findViewById(R.id.p_id);

            this.delPosition = position;       

            String test = String.valueOf(mylist.get(position));

            String finalimgpaths = context.getString(R.string.moreimgpath) + test;

            Glide.with(context)

                    .load(finalimgpaths)

                    .into(imageView);

            view.addView(imageLayout, 0);

            deletebtn.setOnClickListener(new View.OnClickListener() {

                @Override

                public void onClick(View v) {

    //                showDialogBox();

                    imageId = ImageID;

                    Log.e("IMAGEIDONE", imageId);

                    responsearray = responsearray(responsearray, position);

                    new DeleteImage().execute(true);

                }

            });

            return imageLayout;

        }

        @Override

        public boolean isViewFromObject(View view, Object object) {

            return view.equals(object);

        }

        @Override

        public void restoreState(Parcelable state, ClassLoader loader) {

        }

        @Override

        public Parcelable saveState() {

            return null;

        }

        class DeleteImage extends AsyncTask<Boolean, Void, String> {

            @Override

            protected String doInBackground(Boolean... booleans) {

                ProfileApi profileApi = new ProfileApi();

                String result = null;

                try {

                    Log.e("IMAGEID", ImageID);

                    result = profileApi.deleteImage(sharedPreferences.getString("id", ""), imageId);

                    Log.e("DELETERESULT", result);

                    JSONObject object = new JSONObject(result);

                    if (object.getString("error").equalsIgnoreCase("false")) {


                        return "true";

                    } else {

                        String errormsg = object.getString("response");

                        return errormsg;

                    }

                } catch (ApiException e) {

                    e.printStackTrace();

                } catch (JSONException e) {

                    e.printStackTrace();

                }

                return null;

            }

            @Override

            protected void onPostExecute(String s) {

    //            ad.hide();

                super.onPostExecute(s);

                try {

                    if (s != null) {

                        Toast.makeText(context, "Image Deleted",Toast.LENGTH_SHORT).show();

                    mylist.remove(position);

                    notifyDataSetChanged();

                    }

                } catch (IllegalStateException e) {

                    e.printStackTrace();

                }

            }

        }

        public static JSONArray responsearray(JSONArray jarray, int pos) {

            JSONArray Njarray = new JSONArray();

            try {

                for (int i = 0; i < jarray.length(); i++) {

                    if (i != pos)

                        Njarray.put(jarray.get(i));

                }

            } catch (Exception e) {

                e.printStackTrace();

            }

            return Njarray;

        }

    }



查看完整回答
反对 回复 2022-09-28
  • 2 回答
  • 0 关注
  • 80 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信