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