代碼使用火力地堡上傳圖像:使用Firebase Android上傳圖片需要很長時間才能上傳?
Button btnUpload = (Button)findViewById(R.id.btn_upload_image);
btnUpload.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
intent.setType("image/jpeg");
intent.putExtra(Intent.EXTRA_LOCAL_ONLY,true);
startActivityForResult(Intent.createChooser(intent,getString(R.string.str_complete_action)),RC_PHOTO_PICKER);
}
});
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if(requestCode == RC_PHOTO_PICKER && resultCode == RESULT_OK)
{
pbLoader.setVisibility(View.VISIBLE);
Uri selectedImageUri = data.getData();
StorageReference photoReference = mStorageReference.child(getString(R.string.str_images)+selectedImageUri.getLastPathSegment());
photoReference.putFile(selectedImageUri).addOnSuccessListener(this, new OnSuccessListener<UploadTask.TaskSnapshot>() {
@Override
public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
Uri downloadUri = taskSnapshot.getDownloadUrl();
MessageModelClass messageModelClass = new MessageModelClass();
messageModelClass.setImageUrl(downloadUri.toString());
messageModelClass.setmMessage(null);
messageModelClass.setmUserName(userName);
mDatabaseReference.push().setValue(messageModelClass);
messageAdapter.notifyDataSetChanged();
}
}).addOnFailureListener(this, new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
Log.d(TAG,"onFailure:"+e.getMessage());
}
}).addOnCompleteListener(this, new OnCompleteListener<UploadTask.TaskSnapshot>() {
@Override
public void onComplete(@NonNull Task<UploadTask.TaskSnapshot> task) {
// messageAdapter.notifyDataSetChanged();
pbLoader.setVisibility(View.GONE);
Log.d(TAG,"onComplete:");
}
});
}
在發送每當我發送其在我的再循環器顯示如果兩次3個圖像是在待決的任何文本和我發送一些文本,然後被顯示的文本消息的過程在回收站查看三次,而在Firebase控制檯中只顯示一次數據。 當我再次重新啓動應用程序,然後顯示確切的消息。 多次顯示文字或圖片的原因是什麼?
Recyclercode:),如下
private FirebaseDatabase mFirebaseDatabase;
private DatabaseReference mDatabaseReference;
mFirebaseDatabase = FirebaseDatabase.getInstance();
mDatabaseReference = mFirebaseDatabase.getReference().child(getString(R.string.str_messages));
private void attachDatabaseReadListener() {
Log.d(TAG,"attachDatabaseReadListener:");
mChildEventListener = new ChildEventListener() {
@Override
public void onChildAdded(DataSnapshot dataSnapshot, String s) {
MessageModelClass messageModelClass = dataSnapshot.getValue(MessageModelClass.class);
messageModelClass.setmKey(dataSnapshot.getKey());
messageList.add(messageModelClass);
messageAdapter = new MessageAdapter(context, messageList , userName ,confirmationDialogListener);
rvMessage.setAdapter(messageAdapter);
Log.d(TAG,"message list size onChildAdded:"+messageList.size());
// messageAdapter.notifyDataSetChanged();
}
@Override
public void onChildChanged(DataSnapshot dataSnapshot, String s) {
}
@Override
public void onChildRemoved(DataSnapshot dataSnapshot) {
}
@Override
public void onChildMoved(DataSnapshot dataSnapshot, String s) {
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
};
mDatabaseReference.addChildEventListener(mChildEventListener);
}
請上傳您的回收代碼 –
@SagarPatil請校驗碼 – Erum
變化'messageAdapter.notifyDataSetChanged();''來mesageadapter。 notifyItemInserted()' –