Java 当我从另一个活动中删除元素时,如何清除一个活动的arraylist?

Java 当我从另一个活动中删除元素时,如何清除一个活动的arraylist?,java,android,android-intent,arraylist,bundle,Java,Android,Android Intent,Arraylist,Bundle,我有两个活动,我在第一个活动中有2个arraylist,该数组列表已存储在第二个活动的另一个arraylist中。当我删除第二个活动的arraylist元素时,我希望也删除第一个活动的arraylist中的相同索引元素。我尝试了用户给出的以下答案,我面临另一个问题 更新的问题: 当我删除一个视频时,它应该只从数组中删除该视频的缩略图,而从数组中删除所有缩略图 活动代码A private HandlerThread mBackgroundHandlerThread; private Handle

我有两个活动,我在第一个活动中有2个arraylist,该数组列表已存储在第二个活动的另一个arraylist中。当我删除第二个活动的arraylist元素时,我希望也删除第一个活动的arraylist中的相同索引元素。我尝试了用户给出的以下答案,我面临另一个问题

更新的问题: 当我删除一个视频时,它应该只从数组中删除该视频的缩略图,而从数组中删除所有缩略图

活动代码A

 private HandlerThread mBackgroundHandlerThread;
private Handler mBackgroundHandler;
private String mCameraId;
private Size mPreviewSize;
private Size mVideoSize;
private MediaRecorder mMediaRecorder;
private Chronometer mChronometer;
private ImageView thumb;
//private String V1, V2, V3, V4, V5;
//    private Map<String, String> mapA = new HashMap<>();
// private ImageView[] IMGS = {mImageView1, mImageView2, mImageView3, mImageView4, mImageView5};
private int mTotalRotation;
private CaptureRequest.Builder mCaptureRequestBuilder;
public static int count;
public static int max = 5;
private ImageButton mRecordImageButton;
private boolean mIsRecording = false;
public static File mVideoFolder;
private static File mRawVideoFolder;
public static String mVideoFileName;

//Test
private List<Bitmap> bitMapsAvailable = new ArrayList<>();
private List<String> bitMapsFilePath = new ArrayList<>();
private int bitMapIndex;
CameraCaptureSession storedSession;
private ArrayAdapter bitMapAdapter;
private ArrayAdapter bitMapFileAdapter;
private static SparseIntArray ORIENTATIONS = new SparseIntArray();
public int index;
static {
    ORIENTATIONS.append(Surface.ROTATION_0, 0);
    ORIENTATIONS.append(Surface.ROTATION_90, 90);
    ORIENTATIONS.append(Surface.ROTATION_180, 180);
    ORIENTATIONS.append(Surface.ROTATION_270, 270);

}

private static class CompareSizeByArea implements Comparator<Size> {

    @Override
    public int compare(Size lhs, Size rhs) {
        return Long.signum((long) lhs.getWidth() * lhs.getHeight() / (long) rhs.getWidth() * rhs.getHeight());
    }
}


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    //setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
    createVideoFolder();

    mMediaRecorder = new MediaRecorder();
    mChronometer = (Chronometer) findViewById(R.id.chronometer);
    mTextureView = (TextureView) findViewById(R.id.textureView);

    mRecordImageButton = (ImageButton) findViewById(R.id.videoButton);
    mRecordImageButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            if (mIsRecording) {
                mChronometer.stop();
                mChronometer.setVisibility(View.INVISIBLE);
                mIsRecording = false;
                mRecordImageButton.setImageResource(R.mipmap.start_recording);
                //Toast.makeText(getApplicationContext(),"Started",Toast.LENGTH_SHORT).show();

                if(storedSession != null){
                    try {
                        storedSession.stopRepeating();
                        storedSession.abortCaptures();
                    }catch (CameraAccessException e){
                        throw new RuntimeException(e.getMessage());
                    }
                }
                mMediaRecorder.stop();
                mMediaRecorder.reset();
                startPreview();
                //Create bitmap with current video file path
                Bitmap bitMap = ThumbnailUtils.createVideoThumbnail(mVideoFileName, MediaStore.Video.Thumbnails.MICRO_KIND);
                //Add bitmap to array list
                bitMapsAvailable.add(bitMap);
                bitMapsFilePath.add(mVideoFileName);
                // Shows  thumbnails
                showThumbnails();
            } else {
                checkWriteStoragePermission();
            }
        }

    });
}

private void showThumbnails() {

    LinearLayout layout = (LinearLayout) findViewById(R.id.thumbnails);

    bitMapAdapter = new ArrayAdapter(this, R.layout.activity_main, bitMapsAvailable);
    bitMapFileAdapter = new ArrayAdapter(this, R.layout.activity_main, bitMapsFilePath);


    bitMapIndex = 0;
    if (layout.getChildCount() > 0) {
        layout.removeAllViews();
    }
    for (Bitmap eachBitMap : bitMapsAvailable) {

        bitMapIndex++;
        ImageView thumb = new ImageView(this);
        thumb.setId(new Integer(bitMapIndex+ 17));
        thumb.setLayoutParams(new android.view.ViewGroup.LayoutParams(100, 80));
        thumb.setImageBitmap(eachBitMap);
        // Adds the view to the layout
        thumb.setOnClickListener(previewThumb(thumb));


        layout.addView(thumb);
    }
}
View.OnClickListener previewThumb(final ImageView imageview) {

    return new View.OnClickListener() {
        public void onClick(View arg0) {

            index = imageview.getId()-18;
            imageview.setBackgroundColor(0xff999999);
            // Start NewActivity.class
            Intent myIntent = new Intent(MainActivity.this,
                    VideoViewActivity.class);
            //                   VideoView mVideoView = (VideoView) findViewById(R.id.VideoView);
            Bundle bundle = new Bundle();

            bundle.putStringArrayList("bitMapsAvailable", new ArrayList(bitMapsAvailable));
            bundle.putStringArrayList("bitMapsFilePath", new ArrayList(bitMapsFilePath));
            //Add your data to bundle
            bundle.putInt("urlIndex", index);
            myIntent.putExtras(bundle);
            bitMapAdapter.notifyDataSetChanged();
            bitMapFileAdapter.notifyDataSetChanged();

            //  startActivity(myIntent);
            startActivityForResult(myIntent, 111);

        }
    };
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if (resultCode == RESULT_OK) {
        if (requestCode == 111) {
            int indexToBeDeleted = data.getIntExtra("indexToDeleted", -1);
            bitMapsFilePath.remove(indexToBeDeleted);
            bitMapsAvailable.remove(indexToBeDeleted);

        }
    }
私有HandlerThread mBackgroundHandlerThread;
私人处理程序mBackgroundHandler;
私人字符串mCameraId;
私人规模的mPreviewSize;
私人规模;
专用媒体记录器;
私人天文钟;
私用图像查看拇指;
//私有字符串V1、V2、V3、V4、V5;
//私有映射mapA=newhashmap();
//私有图像视图[]IMGS={mImageView1、mImageView2、mImageView3、mImageView4、mImageView5};
私人国际旋转;
私有CaptureRequest.Builder mCaptureRequestBuilder;
公共静态整数计数;
公共静态int max=5;
私有图像按钮mRecordImageButton;
私有布尔错误记录=假;
公共静态文件文件夹;
私有静态文件文件夹;
公共静态字符串文件名;
//试验
私有列表bitMapsAvailable=新ArrayList();
私有列表bitMapsFilePath=new ArrayList();
私有int位图索引;
CameraCaptureSession存储会话;
专用ArrayAdapter位图适配器;
专用阵列适配器bitMapFileAdapter;
专用静态SparseIntArray方向=新SparseIntArray();
公共整数指数;
静止的{
方向。附加(Surface.ROTATION_0,0);
方向。附加(Surface.ROTATION_90,90);
方向。附加(Surface.ROTATION_180,180);
方向。附加(Surface.ROTATION_270,270);
}
私有静态类CompareSizeByArea实现Comparator{
@凌驾
公共整数比较(大小lhs,大小rhs){
返回Long.signum((Long)lhs.getWidth()*lhs.getHeight()/(Long)rhs.getWidth()*rhs.getHeight());
}
}
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//setRequestedOrientation(ActivityInfo.SCREEN\u ORIENTATION\u横向);
createVideoFolder();
mMediaRecorder=新的MediaRecorder();
McChronometer=(计时器)findViewById(R.id.计时器);
mTextureView=(TextureView)findViewById(R.id.TextureView);
mRecordImageButton=(ImageButton)findViewById(R.id.videoButton);
mRecordImageButton.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
如果(错误记录){
mchrometer.stop();
mchrometer.setVisibility(视图.不可见);
错误记录=错误;
mRecordImageButton.setImageResource(R.mipmap.start\u录制);
//Toast.makeText(getApplicationContext(),“Started”,Toast.LENGTH\u SHORT.show();
if(storedSession!=null){
试一试{
storedSession.stopRepeating();
storedSession.abortCaptures();
}捕获(CameraAccessE异常){
抛出新的RuntimeException(例如getMessage());
}
}
mMediaRecorder.stop();
mMediaRecorder.reset();
startPreview();
//使用当前视频文件路径创建位图
位图Bitmap=ThumbnailUtils.createVideoThumbnail(mVideoFileName,MediaStore.Video.Thumbnails.MICRO_-KIND);
//将位图添加到数组列表
bitMapsAvailable.add(位图);
添加(mVideoFileName);
//显示缩略图
显示缩略图();
}否则{
checkWriteStragePermission();
}
}
});
}
私有void显示缩略图(){
LinearLayout布局=(LinearLayout)findViewById(R.id.缩略图);
bitMapAdapter=new ArrayAdapter(this,R.layout.activity_main,bitMapsAvailable);
bitMapFileAdapter=new ArrayAdapter(此,R.layout.activity_main,bitMapsFilePath);
bitMapIndex=0;
if(layout.getChildCount()>0){
layout.removeallview();
}
用于(位图eachBitMap:bitMapsAvailable){
bitMapIndex++;
ImageView thumb=新的ImageView(此);
setId(新整数(bitMapIndex+17));
setLayoutParams(新的android.view.ViewGroup.LayoutParams(100,80));
thumb.setImageBitmap(eachBitMap);
//将视图添加到布局中
setOnClickListener(previewThumb(thumb));
layout.addView(thumb);
}
}
View.OnClickListener预览图(最终图像视图图像视图){
返回新视图。OnClickListener(){
公共void onClick(视图arg0){
index=imageview.getId()-18;
imageview.setBackgroundColor(0xFF99999);
//启动NewActivity.class
Intent myIntent=新Intent(MainActivity.this,
视频观看活动(课堂);
//VideoView mVideoView=(VideoView)findviewbyd(R.id.VideoView);
Bundle=新Bundle();
bundle.putStringArrayList(“bitMapsAvailable”,新ArrayList(bitMapsAvailable));
bundle.putStringArrayList(“bitMapsFilePath”,新ArrayList(bitMapsFilePath));
//将数据添加到bundle
bundle.putInt(“urleindex”,index);
myIntent.putExtras(bundle);
bitMapAdapter.notifyDataSetChanged();
bitMapFileAdapter.notifyDataSetChanged();
//星触觉(myIntent);
startActivityForResult(myIntent,111);
}
};
}
@凌驾
活动结果上的受保护无效(在
   public VideoView videoview;
    ImageButton imgButton;
    ImageButton saveButton;
    List<String> bitMapsAvailable = new ArrayList<>();
    List<String> bitMapsFilePath = new ArrayList<>();
    int indexClicked;
    String videoURL;
    //String videoURL = getIntent().getExtras().getString("url");
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.videoview_main);
        videoview = (VideoView) findViewById(R.id.VideoView);
        //Toast.makeText(this, videoURL, Toast.LENGTH_SHORT).show();

        Bundle bundle = getIntent().getExtras();
        bitMapsAvailable = bundle.getStringArrayList("bitMapsAvailable");
        bitMapsFilePath = bundle.getStringArrayList("bitMapsFilePath");
        indexClicked = bundle.getInt("urlIndex");
        videoURL = bitMapsFilePath.get(indexClicked);


        try {
            // Start the MediaController
            MediaController mediacontroller = new MediaController(
                    VideoViewActivity.this);
            mediacontroller.setAnchorView(videoview);
            // Get the URL from String VideoURL
            Uri video = Uri.parse(videoURL);
            videoview.setMediaController(mediacontroller);
            videoview.setVideoURI(video);

        } catch (Exception e) {
            Log.e("Error", e.getMessage());
            e.printStackTrace();
        }

        videoview.requestFocus();
        videoview.setOnPreparedListener(new OnPreparedListener() {
            // Close the progress bar and play the video
            public void onPrepared(MediaPlayer mp) {

                videoview.start();
            }
        });


        imgButton = (ImageButton) findViewById(R.id.deleteVideo);
        imgButton.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View arg0) {
                if (deleteVideoFile(indexClicked)) {
                    AlertDialog.Builder deletebuilder = new AlertDialog.Builder(VideoViewActivity.this);// use you activity name
                    deletebuilder.setMessage("Are you sure you want to delete? ");
                    deletebuilder.setPositiveButton("Yes",
                            new DialogInterface.OnClickListener() {
                                @Override
                                public void onClick(DialogInterface deletedialog, int delwhich) {
                                    bitMapsFilePath.remove(indexClicked);
                                    bitMapsAvailable.remove(indexClicked);
                                    Toast.makeText(VideoViewActivity.this, "Selected video file is deleted successfully.", Toast.LENGTH_SHORT).show();
                                    Intent intent = new Intent(VideoViewActivity.this,MainActivity.class);
                                    intent.putExtra("indexToBeDeleted", indexClicked);
//                                    intent.getIntExtra()
                                    setResult(RESULT_OK, intent);
                                    startActivity(intent);
                                    finish();
                                }
                            });
                    deletebuilder.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
                        @Override
                        public void onClick(DialogInterface deletedialog, int delwhich) {
                            // Toast.makeText(VideoViewActivity.this, "Abort by user", Toast.LENGTH_SHORT).show();
                        }
                    });
                    AlertDialog deletedialog = deletebuilder.create();
                    deletedialog.show();
                } else {
                    Toast.makeText(VideoViewActivity.this, "Not deleted", Toast.LENGTH_SHORT).show();
                }
            }
        });
        saveButton = (ImageButton) findViewById(R.id.saveVideo);
        saveButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View arg0) {
                // final int index = checkBox.getId()-31;
                AlertDialog.Builder builderSave = new AlertDialog.Builder(VideoViewActivity.this);// use you activity name
                builderSave.setMessage("Save the selected file and delete the rest?")
                        .setPositiveButton("Yes",
                                new DialogInterface.OnClickListener() {
                                    @Override
                                    public void onClick(DialogInterface dialogSave, int whichSave) {
                                        String src = bitMapsFilePath.get(indexClicked);
                                        String destination = mVideoFolder + "/" + new File(src).getName();
                                        File srcFile = new File(src);
                                        srcFile.renameTo(new File(destination));
                                        Toast.makeText(VideoViewActivity.this, "Saved in " + destination, Toast.LENGTH_SHORT).show();
                                        bitMapsAvailable.clear();
                                        for (String filePath : bitMapsFilePath) {
                                            File file = new File(filePath);
                                            file.delete();
                                        }
                                        bitMapsFilePath.clear();
                                        Toast.makeText(VideoViewActivity.this, "Temporary videos are deleted successfully", Toast.LENGTH_SHORT).show();
                                        finish();
                                    }
                                })
                        .setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
                            @Override
                            public void onClick(DialogInterface dialogSave, int whichSave) {
                                Toast.makeText(VideoViewActivity.this, "Not deleted", Toast.LENGTH_SHORT).show();
                            }
                        });
                AlertDialog dialogSave = builderSave.create();
                dialogSave.show();
                //Toast.makeText(VideoViewActivity.this, "Not deleted", Toast.LENGTH_SHORT).show();
            }
        });
    }
    private boolean deleteVideoFile(final int index) {

        try {
            File file = new File(videoURL);
            return file.delete();
        } catch (Exception e) {
            Toast.makeText(VideoViewActivity.this, "Not deleted", Toast.LENGTH_SHORT).show();
            Log.e("Error", e.getMessage());
            throw new RuntimeException(e.getMessage());
        }

    }
View.OnClickListener previewThumb ( final ImageView imageview){

        return new View.OnClickListener() {
            public void onClick(View arg0) {

                int index = imageview.getId() - 18;
                imageview.setBackgroundColor(0xff999999);
                // Start NewActivity.class
                Intent myIntent = new Intent(MainActivity.this,
                        VideoViewActivity.class);

                Bundle bundle = new Bundle();

                bundle.putStringArrayList("bitMapsAvailable", new ArrayList(bitMapsAvailable));
                bundle.putStringArrayList("bitMapsFilePath", new ArrayList(bitMapsFilePath));
                //Add your data to bundle
                bundle.putInt("urlIndex", index);
                myIntent.putExtras(bundle);
                bitMapAdapter.notifyDataSetChanged();
                bitMapFileAdapter.notifyDataSetChanged();

                //Change this line
                startActivityForResult(myIntent, 111);


            }
        };
    }


@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if (resultCode == RESULT_OK) {
        if (requestCode == 111) {
            int indexToBeDeleted = data.getIntExtra("indexToBeDeleted");
            bitMapsFilePath.remove(indexToBeDeleted);
            bitMapsAvailable.remove(indexToBeDeleted);
        }
    }
}
imgButton.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View arg0) {
            if (deleteVideoFile(indexClicked)) {
                AlertDialog.Builder deletebuilder = new AlertDialog.Builder(VideoViewActivity.this);// use you activity name
                deletebuilder.setMessage("Are you sure you want to delete? ")
                        .setPositiveButton("Yes",
                                new DialogInterface.OnClickListener() {
                                    @Override
                                    public void onClick(DialogInterface deletedialog, int delwhich) {
                                        bitMapsFilePath.remove(indexClicked);
                                        bitMapsAvailable.remove(indexClicked);
                                        Toast.makeText(VideoViewActivity.this, "Selected video file is deleted successfully.", Toast.LENGTH_SHORT).show();

                                        //Change here too-----------
                                        Intent intent = new Intent();
                                        intent.putExtra("indexToBeDeleted",indexClicked);
                                        setResult(RESULT_OK,intent);
                                        finish();
                                    }
                                })
                        .setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
                            @Override
                            public void onClick(DialogInterface deletedialog, int delwhich) {
                                // Toast.makeText(VideoViewActivity.this, "Abort by user", Toast.LENGTH_SHORT).show();
                            }
                        });
                AlertDialog deletedialog = deletebuilder.create();
                deletedialog.show();
            } else {
                Toast.makeText(VideoViewActivity.this, "Not deleted", Toast.LENGTH_SHORT).show();
            }
        }
    });