Android Загрузить несколько изображений Для создания базы используйте библиотеку TedBottomPicker - PullRequest
0 голосов
/ 03 ноября 2019

Я использую библиотеку 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

}


}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...