Я использую библиотеку TedBottomPicker, чтобы выбрать несколько фотографий и отобразить их в ImageView, и мне хотелось бы отправить MultiplePhotos в firebase.
открытый класс PosterUneAnnonceActivity расширяет AppCompatActivity, реализует AdapterView.OnItemSelectedListener {private Object ViewGroup;
public static Intent newIntent(Context context) {
// Fill the created intent with the data you want to be passed to this Activity when it's opened.
return new Intent(context, PosterUneAnnonceActivity.class);
}
//************ NEW **********//
private static final int PICK_IMG = 1;
private ArrayList<Uri> ImageList = new ArrayList<Uri>();
private int uploads = 0;
private DatabaseReference databaseReference;
private ProgressDialog progressDialog;
int index = 0;
//TextView textView;
private int upload_count = 0;
//***************** Upload Multiple images to firebase *******************//
private DatabaseReference mFirebaseDatabase;
private StorageReference mFirebaseStorage;
//********** FIREBASE ***********//
FirebaseStorage storgae;
StorageReference storageReference;
//*****************************************//
private Button btnMultiShow ; // Choose image
private EditText imgDescription; // Champ de texte description
private EditText iprix; // Champ de texte prix
private EditText iadresse; // Champ de texte adresse
private ProgressBar uploadProgress;
//************ TedBottomPicker ************//
//private ImageView selected_photo;// IMAGEVIEW
private ImageView selected_photo;// IMAGEVIEW
//private ImageView selected_photo;
private List<Uri> selectedUriList;
private List<Uri> uriList;
private ViewGroup mSelectedImagesContainer;
private RequestManager requestManager;
//*****************//
private Button flechegaucheButton;
//private Button addphotoButton;
private Button btnenvoyerButton; // btnUploadImage
private Context mContext;
private Activity mActivity;
private Spinner mSpinner;
private ArrayAdapter mAdapter;
private Typeface mTypeface;
//*****************//
//************** Multiple upload Firebase **********//
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
this.setContentView(R.layout.poster_une_annonce_activity);
//textView = findViewById(R.id.text);
databaseReference = FirebaseDatabase.getInstance().getReference().child("User_one");
progressDialog = new ProgressDialog(this);
progressDialog.setMessage("Uploading ..........");
//*************** New upload to firebase test ***********//
mFirebaseDatabase = FirebaseDatabase.getInstance().getReference();
mFirebaseStorage = FirebaseStorage.getInstance().getReference();
storgae = FirebaseStorage.getInstance("gs://ptitejob-2a88d.appspot.com/");
storageReference = storgae.getReference();
//********************* Upload to firebase *********************//
iprix = findViewById(R.id.prix_edit_text); // Champ de prix
iadresse = findViewById(R.id.adresse_edit_text); // Champ de adresse
btnenvoyerButton = findViewById(R.id.btnenvoyer_button);
uploadProgress = findViewById(R.id.new_post_progress);
imgDescription = findViewById(R.id.description_de_la_job_text_view); // Champ de texte
//************ TedBottomPicker ************//
selected_photo = findViewById(R.id.champtextbig_image_view);
mSelectedImagesContainer = findViewById(R.id.selected_photos_container);
requestManager = Glide.with(this);
setMultiShowButton();
//********* BTN upload *********//
btnMultiShow.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
setMultiShowButton();
Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
intent.setType("image/*");
intent.putExtra(Intent.EXTRA_ALLOW_MULTIPLE, true);
}
});
//******************************//
//********* BTN upload *********//
btnenvoyerButton.setOnClickListener(new View.OnClickListener() {
@SuppressLint("SetTextI18n")
@Override
public void onClick(View v) {
//uploadImage();
}
});
// Configure flechegauche component
flechegaucheButton = this.findViewById(R.id.flechegauche_button);
flechegaucheButton.setOnClickListener((view) -> {
this.onFlechegauchePressed();
});
}
//******************** Suite take photos **********************//
@SuppressLint("SetTextI18n")
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == PICK_IMG) {
if (resultCode == RESULT_OK) {
if (data.getClipData() != null) {
int count = data.getClipData().getItemCount();
int CurrentImageSelect = 0;
while (CurrentImageSelect < count) {
Uri imageuri = data.getClipData().getItemAt(CurrentImageSelect).getUri();
ImageList.add(imageuri);
CurrentImageSelect = CurrentImageSelect + 1;
}
//textView.setVisibility(View.VISIBLE);
//textView.setText("You Have Selected "+ ImageList.size() +" Pictures" );
btnMultiShow.setVisibility(View.GONE);
}
}
}
}
@SuppressLint("SetTextI18n")
public void upload(View view) {
//textView.setText("Please Wait ... If Uploading takes Too much time please the button again ");
progressDialog.show();
final StorageReference ImageFolder = FirebaseStorage.getInstance().getReference().child("ImageFolder");
for (uploads=0; uploads < ImageList.size(); uploads++) {
Uri Image = ImageList.get(uploads);
final StorageReference imagename = ImageFolder.child("image/"+Image.getLastPathSegment());
imagename.putFile(ImageList.get(uploads)).addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
@Override
public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
imagename.getDownloadUrl().addOnSuccessListener(new OnSuccessListener<Uri>() {
@Override
public void onSuccess(Uri uri) {
String url = String.valueOf(uri);
SendLink(url);
}
});
}
});
}
}
private void SendLink(String url) {
HashMap<String, String> hashMap = new HashMap<>();
hashMap.put("link", url);
databaseReference.push().setValue(hashMap).addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
progressDialog.dismiss();
//textView.setText("Image Uploaded Successfully");
btnenvoyerButton.setVisibility(View.GONE);
ImageList.clear();
}
});
}
//*************** TedBottomPicker ******************//
private void setMultiShowButton() {
btnMultiShow = findViewById(R.id.addphoto_button); // Choose image
btnMultiShow.setOnClickListener(view -> {
PermissionListener permissionlistener = new PermissionListener() {
@Override
public void onPermissionGranted() {
TedBottomPicker.with(PosterUneAnnonceActivity.this)
//.setPeekHeight(getResources().getDisplayMetrics().heightPixels/2)
.setPeekHeight(1600)
.showTitle(false)
.setCompleteButtonText("Done")
.setEmptySelectionText("No Select")
.setSelectedUriList(selectedUriList)
.showMultiImage(uriList -> {
selectedUriList = uriList;
showUriList(uriList);
/*.showMultiImage(new TedBottomSheetDialogFragment.OnMultiImageSelectedListener() {
@Override
public void onImagesSelected( ArrayList<Uri> uriList) {
// here is selected image uri list
}*/
});
}
@Override
public void onPermissionDenied(ArrayList<String> deniedPermissions) {
Toast.makeText(PosterUneAnnonceActivity.this, "Permission Denied\n" + deniedPermissions.toString(), Toast.LENGTH_SHORT).show();
}
};
checkPermission(permissionlistener);
});
}
private void checkPermission(PermissionListener permissionlistener) {
TedPermission.with(PosterUneAnnonceActivity.this)
.setPermissionListener(permissionlistener)
.setDeniedMessage("If you reject permission,you can not use this service\n\nPlease turn on permissions at [Setting] > [Permission]")
.setPermissions(Manifest.permission.WRITE_EXTERNAL_STORAGE)
.check();
}
//*****//
private void showUriList(List<Uri> uriList) {
// Remove all views before
// adding the new ones.
mSelectedImagesContainer.removeAllViews();
selected_photo.setVisibility(View.GONE);
mSelectedImagesContainer.setVisibility(View.VISIBLE);
int widthPixel = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 100, getResources().getDisplayMetrics());
int heightPixel = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 200, getResources().getDisplayMetrics());
for (Uri uri : uriList) {
View imageHolder = LayoutInflater.from(this).inflate(R.layout.image_item, null);
ImageView thumbnail = imageHolder.findViewById(R.id.media_image);
requestManager
.load(uri.toString())
.apply(new RequestOptions().fitCenter())
.into(thumbnail);
mSelectedImagesContainer.addView(imageHolder);
thumbnail.setLayoutParams(new FrameLayout.LayoutParams(widthPixel, heightPixel));
}
}
//*****//
/*@Override
protected void onDestroy() {
if (singleImageDisposable != null && !singleImageDisposable.isDisposed()) {
singleImageDisposable.dispose();
}
if (multiImageDisposable != null && !multiImageDisposable.isDisposed()) {
multiImageDisposable.dispose();
}
super.onDestroy();
}*/
//*****//
//*************************************************************//
public void onFlechegauchePressed() {
this.startMenuActivity();
}
public void onTitlePressed() {
}
private void startMenuActivity() {
this.startActivity(MenuActivity.newIntent(this));
}
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
// On selecting a spinner item
String item = parent.getItemAtPosition(position).toString();
// Showing selected spinner item
Toast.makeText(parent.getContext(), "Selected: " + item, Toast.LENGTH_LONG).show();
}
public void onNothingSelected(AdapterView<?> arg0) {
// TODO Auto-generated method stub
}
}