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

我想在其中添加一些图像,一切都很好(图像添加),但是当我想删除图像时,它正在工作并删除图像,但它删除了最后一个图像而不是我想删除的特定图像,我不知道如何获取特定图像的位置并删除它。


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;

    }

    

慕姐8265434
浏览 126回答 2
2回答

慕的地10843

您的问题是视图寻呼机在删除图像任务完成之前重新加载。因此,将加载相同的图像集,但由于列表大小已被修改,因此不会加载最后一个图像。解决方案:等待删除操作完成,然后再在视图页程序上调用通知数据集更改()

湖上湖

我已经更新了你的代码,只是试试下面的代码:&nbsp;public class PhotoAdd_Adapter extends PagerAdapter {&nbsp; &nbsp; &nbsp; &nbsp; private LayoutInflater inflater;&nbsp; &nbsp; &nbsp; &nbsp; private Context context;&nbsp; &nbsp; &nbsp; &nbsp; ArrayList<String> mylist;&nbsp; &nbsp; &nbsp; &nbsp; SharedPreferences sharedPreferences;&nbsp; &nbsp; &nbsp; &nbsp; JSONArray responsearray = null;&nbsp; &nbsp; &nbsp; &nbsp; private static final String TAG_PHOTO_ONE = "Gallery_Full";&nbsp; &nbsp; &nbsp; &nbsp; HashMap<String, String> get;&nbsp; &nbsp; &nbsp; &nbsp; LinearLayout addimages;&nbsp; &nbsp; &nbsp; &nbsp; String ImageID;&nbsp; &nbsp; &nbsp; &nbsp; ProgressBar progressBar;&nbsp; &nbsp; &nbsp; &nbsp; String finalimgpath, imageId;&nbsp; &nbsp; &nbsp; &nbsp; ImageView imageView, deletebtn;&nbsp; &nbsp; &nbsp; &nbsp; TextView no_image, p_id;&nbsp; &nbsp; &nbsp; &nbsp; private FragmentManager f_manager;&nbsp; &nbsp; &nbsp; &nbsp; int delPosition;&nbsp; &nbsp; &nbsp; &nbsp; public PhotoAdd_Adapter(Context context, ArrayList<String> mylist, FragmentManager f_manager) {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; this.f_manager = f_manager;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; this.context = context;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; this.mylist = mylist;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; inflater = LayoutInflater.from(context);&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; sharedPreferences = context.getSharedPreferences(context.getString(R.string.prefs), 0);&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; &nbsp; @Override&nbsp; &nbsp; &nbsp; &nbsp; public void destroyItem(ViewGroup container, int position, Object object) {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; container.removeView((View) object);&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; &nbsp; @Override&nbsp; &nbsp; &nbsp; &nbsp; public int getCount() {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; return mylist.size();&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; &nbsp; @Override&nbsp; &nbsp; &nbsp; &nbsp; public int getItemPosition(@NonNull Object object) {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if(mylist.contains(object)){&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; return mylist.indexOf(object);&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }else {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; return POSITION_NONE;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; //&nbsp; &nbsp; &nbsp; &nbsp; return super.getItemPosition(object);&nbsp; &nbsp; //&nbsp; &nbsp; &nbsp; &nbsp; return PagerAdapter.POSITION_NONE;&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; &nbsp; @Override&nbsp; &nbsp; &nbsp; &nbsp; public Object instantiateItem(ViewGroup view, final int position) {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; View imageLayout = inflater.inflate(R.layout.photoadd_adapter, view, false);&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; assert imageLayout != null;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; imageView = imageLayout.findViewById(R.id.image_adapter);&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; deletebtn = imageLayout.findViewById(R.id.deletebtn);&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; p_id = imageLayout.findViewById(R.id.p_id);&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; this.delPosition = position;&nbsp; &nbsp; &nbsp; &nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; String test = String.valueOf(mylist.get(position));&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; String finalimgpaths = context.getString(R.string.moreimgpath) + test;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Glide.with(context)&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; .load(finalimgpaths)&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; .into(imageView);&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; view.addView(imageLayout, 0);&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; deletebtn.setOnClickListener(new View.OnClickListener() {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; @Override&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; public void onClick(View v) {&nbsp; &nbsp; //&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; showDialogBox();&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; imageId = ImageID;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Log.e("IMAGEIDONE", imageId);&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; responsearray = responsearray(responsearray, position);&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; new DeleteImage().execute(true);&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; });&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; return imageLayout;&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; &nbsp; @Override&nbsp; &nbsp; &nbsp; &nbsp; public boolean isViewFromObject(View view, Object object) {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; return view.equals(object);&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; &nbsp; @Override&nbsp; &nbsp; &nbsp; &nbsp; public void restoreState(Parcelable state, ClassLoader loader) {&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; &nbsp; @Override&nbsp; &nbsp; &nbsp; &nbsp; public Parcelable saveState() {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; return null;&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; &nbsp; class DeleteImage extends AsyncTask<Boolean, Void, String> {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; @Override&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; protected String doInBackground(Boolean... booleans) {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ProfileApi profileApi = new ProfileApi();&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; String result = null;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; try {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Log.e("IMAGEID", ImageID);&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; result = profileApi.deleteImage(sharedPreferences.getString("id", ""), imageId);&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Log.e("DELETERESULT", result);&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; JSONObject object = new JSONObject(result);&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if (object.getString("error").equalsIgnoreCase("false")) {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; return "true";&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; } else {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; String errormsg = object.getString("response");&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; return errormsg;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; } catch (ApiException e) {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; e.printStackTrace();&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; } catch (JSONException e) {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; e.printStackTrace();&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; return null;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; @Override&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; protected void onPostExecute(String s) {&nbsp; &nbsp; //&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ad.hide();&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; super.onPostExecute(s);&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; try {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if (s != null) {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Toast.makeText(context, "Image Deleted",Toast.LENGTH_SHORT).show();&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; mylist.remove(position);&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; notifyDataSetChanged();&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; } catch (IllegalStateException e) {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; e.printStackTrace();&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; &nbsp; public static JSONArray responsearray(JSONArray jarray, int pos) {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; JSONArray Njarray = new JSONArray();&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; try {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; for (int i = 0; i < jarray.length(); i++) {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if (i != pos)&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Njarray.put(jarray.get(i));&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; } catch (Exception e) {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; e.printStackTrace();&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; return Njarray;&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; }
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java