我正在尝试显示已成功上传到firebase存储中的图像,并且其唯一ID也在Firebase数据库中的Imageview中的“ pics”下进行了更新,但是我尝试了多次,但是无法显示该图像或检索图像。
应在何处显示图像以代替书架,这是默认图片,但不能这样做。 以下是我的上传活动
public class UploadBook extends AppCompatActivity {
FirebaseDatabase database;
EditText etAuthor, etbookDesc, etbookTitle, etName, etEmail, etMobile, etUniversity, etbookPrice;
ImageView iv1;
Button b1;
AlertDialog.Builder builder1;
DatabaseReference dbreference;
String item = "start"; // for spinner
FirebaseStorage storage;
private static final int CAMERA_REQUEST_CODE = 1;
StorageReference mStorageRef;
FirebaseAuth fauth;
int count = 0;
Uri filePath = null;
public Books b;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(com.nepalpolice.bookbazaar.R.layout.activity_upload_book);
getSupportActionBar().setTitle("Upload book");
if (Build.VERSION.SDK_INT > Build.VERSION_CODES.LOLLIPOP)
ActivityCompat.requestPermissions(UploadBook.this, new String[]{android.Manifest.permission.CAMERA, android.Manifest.permission.READ_EXTERNAL_STORAGE, android.Manifest.permission.WRITE_EXTERNAL_STORAGE}, 11);
database = FirebaseDatabase.getInstance();
dbreference = database.getReference();
fauth = FirebaseAuth.getInstance();
mStorageRef = FirebaseStorage.getInstance().getReference();
iv1 = (ImageView) findViewById(com.nepalpolice.bookbazaar.R.id.itemImage1);
etAuthor = (EditText) findViewById(com.nepalpolice.bookbazaar.R.id.editText1);
etbookDesc = (EditText) findViewById(com.nepalpolice.bookbazaar.R.id.editText2);
etbookTitle = (EditText) findViewById(com.nepalpolice.bookbazaar.R.id.editText3);
etName = (EditText) findViewById(com.nepalpolice.bookbazaar.R.id.editText4);
etEmail = (EditText) findViewById(com.nepalpolice.bookbazaar.R.id.editText5);
etMobile = (EditText) findViewById(com.nepalpolice.bookbazaar.R.id.editText6);
etUniversity = (EditText) findViewById(com.nepalpolice.bookbazaar.R.id.editText7);
etbookPrice = (EditText) findViewById(com.nepalpolice.bookbazaar.R.id.editText8);
b1 = (Button) findViewById(com.nepalpolice.bookbazaar.R.id.buttonPost);
t3 t = new t3();
t.execute();
Spinner spinner = (Spinner) findViewById(com.nepalpolice.bookbazaar.R.id.spinner1);
final String[] items = new String[]{"Select your category :", "Computer Science", "Electronics", "Mechanical", "Civil", "Electrical", "Mechatronics", "Software", "Others"};
ArrayAdapter<String> spinneradapter = new ArrayAdapter<>(this, android.R.layout.simple_spinner_dropdown_item, items);
spinner.setAdapter(spinneradapter);
spinner.setActivated(false);
spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> adapterView, View view, int position, long l) {
item = adapterView.getItemAtPosition(position).toString();
count = position;
if (position == 0)
return;
Toast.makeText(adapterView.getContext(), "Selected: " + item, Toast.LENGTH_LONG).show();
}
@Override
public void onNothingSelected(AdapterView<?> adapterView) {
}
});
imageButtonclick();
postButtonClick();
builder1 = new AlertDialog.Builder(this);
builder1.setMessage("Discard this item !");
builder1.setCancelable(true);
builder1.setPositiveButton("No", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
dialog.cancel();
}
});
builder1.setNegativeButton("Yes", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
Intent in = new Intent(UploadBook.this, BooksPage.class);
startActivity(in);
finish();
dialog.cancel();
}
});
}
void imageButtonclick() {
iv1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
CropImage.activity(filePath).setGuidelines(CropImageView.Guidelines.ON)
.setAspectRatio(1,1).start(UploadBook.this);
// Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
//intent.putExtra(MediaStore.EXTRA_OUTPUT,imageuri);
//startActivityForResult(intent, CAMERA_REQUEST_CODE);
}
});
}
void postButtonClick() {
b1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (count == 0) {
Toast.makeText(UploadBook.this, "Please select a valid category", Toast.LENGTH_SHORT).show();
return;
}
if (!TextUtils.isDigitsOnly(etMobile.getText()) || etMobile.getText().toString().trim().length() != 10) {
Toast.makeText(UploadBook.this, "Please check number format !", Toast.LENGTH_SHORT).show();
return;
}
if (etAuthor.getText().toString().trim().length() > 0 && etbookDesc.getText().toString().trim().length() > 0
&& etbookTitle.getText().toString().trim().length() > 0 && etName.getText().toString().trim().length() > 0
&& etEmail.getText().toString().trim().length() > 0 && etMobile.getText().toString().trim().length() > 0
&& etUniversity.getText().toString().trim().length() > 0 && etbookPrice.getText().toString().trim().length() > 0
&& filePath!=null) {
String bauthor = etAuthor.getText().toString();
String bdesc = etbookDesc.getText().toString();
String btitle = etbookTitle.getText().toString();
String sellername = etName.getText().toString();
String selleremail = etEmail.getText().toString();
Long sellermobile = Long.parseLong(etMobile.getText().toString());
String selleruniversity = etUniversity.getText().toString();
Double bprice = Double.parseDouble(etbookPrice.getText().toString());
Toast.makeText(getApplicationContext(), "Your book will be uploaded shortly !", Toast.LENGTH_SHORT).show();
b = new Books(btitle, bauthor, bdesc, sellername, selleremail, sellermobile, item, selleruniversity, bprice);
String bookid = dbreference.child("books").child(item).push().getKey();
dbreference.child("books").child(item).child(bookid).setValue(b);
t2 t2 = new t2();
t2.execute(bookid);
Intent in = new Intent(UploadBook.this, BooksPage.class);
startActivity(in);
finish();
} else {
Toast.makeText(UploadBook.this, "Please enter your complete details !", Toast.LENGTH_SHORT).show();
}
}
});
}
@Override
public void onBackPressed() {
/*AlertDialog alert2 = builder1.create();
alert2.show();*/
CustomDialogClass cdd = new CustomDialogClass(UploadBook.this);
cdd.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
cdd.show();
}
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if(requestCode == CAMERA_REQUEST_CODE && resultCode == RESULT_OK) {
filePath = data.getData();
iv1.setImageURI(filePath);
}
if (requestCode == CropImage.CROP_IMAGE_ACTIVITY_REQUEST_CODE) {
CropImage.ActivityResult result = CropImage.getActivityResult(data);
if (resultCode == RESULT_OK) {
Uri resultUri = result.getUri();
iv1.setImageURI(resultUri);
filePath = resultUri;
} else if (resultCode == CropImage.CROP_IMAGE_ACTIVITY_RESULT_ERROR_CODE) {
Exception error = result.getError();
}
}
}
class t2 extends AsyncTask<String,Integer,Boolean> {
@Override
protected Boolean doInBackground(final String... bookid) {
if(filePath != null) {
mStorageRef.child(bookid[0]).putFile(filePath).addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
@Override
public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
Task<Uri> downloadUrl = taskSnapshot.getMetadata().getReference().getDownloadUrl();
Toast.makeText(UploadBook.this, "Upload successful", Toast.LENGTH_SHORT).show();
dbreference.child("books").child(item).child(bookid[0]).child("pics").setValue(downloadUrl.toString());
}
})
.addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
Toast.makeText(UploadBook.this, "Upload Failed : " + e, Toast.LENGTH_SHORT).show();
}
});
}
return null;
}
}
class t3 extends AsyncTask<String,Integer,Boolean>{
@Override
protected Boolean doInBackground(String... strings) {
publishProgress();
return null;
}
@Override
protected void onProgressUpdate(Integer... values) {
super.onProgressUpdate(values);
etName.setText(PreferenceManager.getDefaultSharedPreferences(getApplicationContext()).getString("name","Delault name"));
etEmail.setText(PreferenceManager.getDefaultSharedPreferences(getApplicationContext()).getString("email","Default email"));
etUniversity.setText(PreferenceManager.getDefaultSharedPreferences(getApplicationContext()).getString("university","Default university"));
etMobile.setText(String.valueOf(PreferenceManager.getDefaultSharedPreferences(getApplicationContext()).getString("phone","Default phone")));
}
}
我的适配器类是
public class SubjectBooksAdapter extends RecyclerView.Adapter<SubjectBooksAdapter.MyViewHolder> {
ArrayList<Books> bookslist;
CardView cv;
FirebaseAuth fauth;
FirebaseDatabase database;
DatabaseReference dbreference;
Books b;
public SubjectBooksAdapter(ArrayList<Books> bookslist){
this.bookslist = bookslist;
}
@Override
public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.layout,parent,false);
return new MyViewHolder(v);
}
public class MyViewHolder extends RecyclerView.ViewHolder {
TextView bookName,bookAuthor,bookDesc,bookPrice,bookCall;
ImageView iv;
MyViewHolder(final View itemView) {
super(itemView);
cv = (CardView) itemView.findViewById(R.id.my_card_view);
iv = (ImageView) itemView.findViewById(R.id.imageView);
database = FirebaseDatabase.getInstance();
dbreference = database.getReference("books");
bookName = (TextView) itemView.findViewById(R.id.bookName);
bookAuthor = (TextView) itemView.findViewById(R.id.bookAuthor);
bookDesc = (TextView) itemView.findViewById(R.id.bookDesc);
bookPrice = (TextView) itemView.findViewById(R.id.bookPrice);
bookCall = (TextView) itemView.findViewById(R.id.bookCall);
fauth = FirebaseAuth.getInstance();
}
}
@Override
public void onBindViewHolder(final MyViewHolder holder, final int position) {
database = FirebaseDatabase.getInstance();
dbreference = database.getReference("books");
b = bookslist.get(position);
holder.bookName.setText(b.getBname());
holder.bookAuthor.setText(b.getBauthor());
holder.bookDesc.setText(b.getBdesc());
holder.bookPrice.setText("Rs. "+b.getPrice());
holder.bookCall.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//Log.e("Current user is ", fauth.getCurrentUser().getEmail());
b = bookslist.get(position);
String[] arr = {b.getSelleremail(),b.getSellername(),b.getBname(),b.getBauthor()};
//Log.e("Seller is ",b.getSellername());
Intent in = new Intent(v.getContext(),Chat.class);
in.putExtra("seller",arr);
v.getContext().startActivity(in);
}
});
Glide.with(cv.getContext()).load(Uri.parse(b.getPics())).placeholder(R.drawable.bshelf).error(R.drawable.bshelf).into(holder.iv);
}
@Override
public int getItemCount() {
return bookslist.size();
}
}
请帮助。
这是我的整个项目 https://github.com/BlueYeti1881/Pustak
谢谢。
答案 0 :(得分:0)
在UploadBook类中对此进行更改
if(filePath != null) {
mStorageRef.child(bookid[0]).putFile(filePath).addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
@Override
public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
Task<Uri> downloadUrl = taskSnapshot.getMetadata().getReference().getDownloadUrl();
Toast.makeText(UploadBook.this, "Upload successful", Toast.LENGTH_SHORT).show();
dbreference.child("books").child(item).child(bookid[0]).child("pics").setValue(downloadUrl.toString());
}
})
.addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
}
});
}
为此-
final StorageReference ref = mStorageRef.child(bookid[0]);
UploadTask uploadTask = ref.putFile(file);
Task<Uri> urlTask = uploadTask.continueWithTask(new Continuation<UploadTask.TaskSnapshot, Task<Uri>>() {
@Override
public Task<Uri> then(@NonNull Task<UploadTask.TaskSnapshot> task) throws Exception {
if (!task.isSuccessful()) {
throw task.getException();
}
return ref.getDownloadUrl();
}
}).addOnCompleteListener(new OnCompleteListener<Uri>() {
@Override
public void onComplete(@NonNull Task<Uri> task) {
if (task.isSuccessful()) {
Uri downloadUri = task.getResult();
dbreference.child("books").child(item).child(bookid[0]).child("pics").setValue(downloadUri.toString());
} else {
// Handle failures
}
}
});