#android #firebase
#Android #firebase
Вопрос:
введите описание изображения здесь
На приведенных выше изображениях последний не отображается в режиме рециркуляции, в чем причина. Мой основной код действия приведен ниже, и вы можете проверить, что с этим не так. Все первые изображения загружаются приложением IOS и отображаются в режиме рециркуляции. Но когда я загружаю изображения со своего телефона, они не отображаются в recyclceView.
personPicture.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent chooseProfilePictureFromGallery = new Intent(Intent.ACTION_GET_CONTENT);
chooseProfilePictureFromGallery.setType("image/*");
if (chooseProfilePictureFromGallery.resolveActivity(getApplicationContext().getPackageManager()) != null) {
startActivityForResult(Intent.createChooser(chooseProfilePictureFromGallery, "Select Picture"), PICK_IMAGE);
}
}
});
UButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(checkValidity()==true)
{
detailInfoUpload();
}
}
});
}
private boolean checkValidity() {
String name = pName.getText().toString();
String age = pAge.getText().toString().trim();
String contactNumber = pNumber.getText().toString().trim();
String address = pFullAddress.getText().toString();
if(name.isEmpty())
{
Toast.makeText(getApplicationContext(),"Please give a name",Toast.LENGTH_SHORT).show();
return false;
}
else if(age.isEmpty())
{
Toast.makeText(getApplicationContext(),"Please give proper age",Toast.LENGTH_SHORT).show();
return false;
}
else if(contactNumber.isEmpty() || contactNumber.length()<11)
{
Toast.makeText(getApplicationContext(),"Please give contact number",Toast.LENGTH_SHORT).show();
return false;
}
else if(address.isEmpty())
{
Toast.makeText(getApplicationContext(),"Please give a name",Toast.LENGTH_SHORT).show();
return false;
}
return true;
}
private void showToast() {
Toast.makeText(getApplicationContext(), "Information Uploaded Successfully ", Toast.LENGTH_SHORT).show();
}
private void detailInfoUpload() {
if (FilePathUri != null) {
final ProgressDialog progressDialog = new ProgressDialog(this);
progressDialog.setTitle("Uploading");
progressDialog.show();
String uName = pName.getText().toString().trim();
String uAge = pAge.getText().toString();
String uBelong = pBelong.getText().toString().trim();
String uDC = pDisappearedCity.getText().toString().trim();
String uDD = pDisappearedDate.getText().toString().trim();
String uAdd = pFullAddress.getText().toString();
String uPh = pNumber.getText().toString().trim();
String uId = firebaseAuth.getInstance().getCurrentUser().getUid();
databaseReference = FirebaseDatabase.getInstance().getReference();
String postid = databaseReference.child("missing_requests").push().getKey();
StorageReference storageReference2 = storageReference.child(postid "." GetFileExtension(FilePathUri));
storageReference2.putFile(FilePathUri)
.addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
@Override
public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
Handler handler = new Handler();
handler.postDelayed(new Runnable() {
@Override
public void run() {
progressDialog.setProgress(0);
}
}, 500);
PostMissingModel postMissingModel = new PostMissingModel(uAdd,uAge, uBelong,
uDD,uDC,genderT,taskSnapshot.getUploadSessionUri().toString(),postid,uName,statusT,uPh,uId);
//String ImageUploadId = databaseReference.push().getKey();
Log.d("mes","we are in just above uploading method");
databaseReference.child("missing_requests").push().setValue(postMissingModel);
showToast();
finish();
}
})
.addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception exception) {
progressDialog.dismiss();
Toast.makeText(getApplicationContext(), exception.getMessage(), Toast.LENGTH_LONG).show();
}
})
.addOnProgressListener(new OnProgressListener<UploadTask.TaskSnapshot>() {
@Override
public void onProgress(UploadTask.TaskSnapshot taskSnapshot) {
//displaying the upload progress
double progress = (100.0 * taskSnapshot.getBytesTransferred()) / taskSnapshot.getTotalByteCount();
progressDialog.setMessage("Uploaded " ((int) progress) "%...");
}
});
}
else {
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == PICK_IMAGE amp;amp; resultCode == RESULT_OK amp;amp; data != null amp;amp; data.getData() != null) {
FilePathUri = data.getData();
try {
Bitmap bitmap = MediaStore.Images.Media.getBitmap(getContentResolver(), FilePathUri);
personPicture.setImageBitmap(bitmap);
} catch (IOException e) {
e.printStackTrace();
}
}
}
public String GetFileExtension(Uri uri) {
ContentResolver contentResolver = getContentResolver();
MimeTypeMap mimeTypeMap = MimeTypeMap.getSingleton();
return mimeTypeMap.getExtensionFromMimeType(contentResolver.getType(uri)) ;
}
}
Комментарии:
1. пожалуйста, поделитесь своим кодом.
2. Возможно, ваш тип файла не тот. проверьте, куда вы загружаете, тип файла должен быть в точном формате.
3. Общий, пожалуйста, проверьте это
Ответ №1:
используйте его изображение в формате jpeg, чтобы использовать библиотеку Picasso. Ссылка
получите зависимость от этого URL-адреса, добавьте его в свой файл Gradle и используйте этот код:
Picasso.get().load("YOUR IMAGE URL HERE").into(imageView);
если это не сработает, не могли бы вы поделиться с нами кодом?
Комментарии:
1. Я проверил это. При загрузке проблем нет. Изображение успешно загружается, но не извлекается
2. чтобы получить изображение из firebase, сначала сохраните его URL-адрес в базе данных realtimedatabase, а затем получите этот URL-адрес из firebse с помощью кода и 3-го пользователя Picaso, чтобы установить изображение в ImageView для RecycleView
3. я просто хочу посмотреть код, как вы устанавливаете их в режим рециркуляции
4. Все изображения извлекаются в режиме рециркуляции, единственное последнее, которое я загрузил, не отображается. Я думаю, что с представлением recycle все в порядке, потому что в представлении recycle отображаются первые 8 изображений, которые загружены другим пользователем с помощью приложения IOS
5. После 3 часов непрерывной работы проблема решена