实时触发 .push() 的等效项

花瓶

我正在将我的实时数据库应用程序转换为 firestore。我无法弄清楚的问题是在我的应用程序中,我正在使用.push()与此等效的 Firestore什么?我在下面发布了我的代码作为参考。对不起,如果这是模糊的不知道还包括什么

@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.chat_activity);

    firebaseFirestore = FirebaseFirestore.getInstance();
    mMessageDoc = firebaseFirestore.document("Messages");

    // mFirebaseDatabase = FirebaseDatabase.getInstance();
    // mMessagedatabaseReference = mFirebaseDatabase.getReference().child("messages");


    mFirebaseStorage = FirebaseStorage.getInstance();
    mChatPhotosStorageReference = mFirebaseStorage.getReference().child("chat_photos");

    // Initialize references to views
    mProgressBar = (ProgressBar) findViewById(R.id.progressBar);
    mMessageListView = (ListView) findViewById(R.id.messageListView);
    mPhotoPickerButton = (ImageButton) findViewById(R.id.photoPickerButton);
    mMessageEditText = (EditText) findViewById(R.id.messageEditText);
    mSendButton = (Button) findViewById(R.id.sendButton);

    mCurrentUser = FirebaseAuth.getInstance().getCurrentUser();
    final String current_uid = mCurrentUser.getUid();

    // Initialize progress bar
    mProgressBar.setVisibility(ProgressBar.INVISIBLE);

    //Initialize message ListView and its adapter
    List<FriendlyMessage> friendlyMessages = new ArrayList<>();
    mMessageAdapter = new MessageAdapter(this, R.layout.item_message, friendlyMessages);
    mMessageListView.setAdapter(mMessageAdapter);

    // ImagePickerButton shows an image picker to upload a image for a message
    mPhotoPickerButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            Intent galleryIntent = new Intent();
            galleryIntent.setType("image/*");
            galleryIntent.setAction(Intent.ACTION_GET_CONTENT);

            startActivityForResult(Intent.createChooser(galleryIntent, "Select Image"), GALLERY_PICK);
        }
    });



    // Enable Send button when there's text to send
    mMessageEditText.addTextChangedListener(new TextWatcher() {
        @Override
        public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
        }

        @Override
        public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
            if (charSequence.toString().trim().length() > 0) {
                mSendButton.setEnabled(true);
            } else {
                mSendButton.setEnabled(false);
            }
        }

        @Override
        public void afterTextChanged(Editable editable) {
        }
    });
    mMessageEditText.setFilters(new InputFilter[]{new InputFilter.LengthFilter(DEFAULT_MSG_LENGTH_LIMIT)});

    // Send button sends a message and clears the EditText
    mSendButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            FriendlyMessage friendlyMessage = new FriendlyMessage(mMessageEditText.getText().toString());
            mMessagedatabaseReference.push().setValue(friendlyMessage);
            // Clear input box
            mMessageEditText.setText("");
        }
    });

    mChildEventListner = new ChildEventListener() {
        @Override
        public void onChildAdded(@NonNull DataSnapshot dataSnapshot, @Nullable String s) {
            FriendlyMessage friendlyMessage = dataSnapshot.getValue(FriendlyMessage.class);
            mMessageAdapter.add(friendlyMessage);
        }

        @Override
        public void onChildChanged(@NonNull DataSnapshot dataSnapshot, @Nullable String s) {

        }

        @Override
        public void onChildRemoved(@NonNull DataSnapshot dataSnapshot) {

        }

        @Override
        public void onChildMoved(@NonNull DataSnapshot dataSnapshot, @Nullable String s) {

        }

        @Override
        public void onCancelled(@NonNull DatabaseError databaseError) {

        }
    };
    mMessagedatabaseReference.addChildEventListener(mChildEventListner);

    mSendButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            FriendlyMessage friendlyMessage = new FriendlyMessage(mMessageEditText.getText().toString(), current_uid, null);
            mMessagedatabaseReference.push().setValue(friendlyMessage);

            // Clear input box
            mMessageEditText.setText("");
        }
    });

}

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);

    if (requestCode == GALLERY_PICK && resultCode == RESULT_OK) {

        Uri selectedImageUri = data.getData();

        final StorageReference photoRef = mChatPhotosStorageReference.child(selectedImageUri.getLastPathSegment());

        photoRef.putFile(selectedImageUri).addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
            @Override
            public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
                photoRef.getDownloadUrl().addOnSuccessListener(new OnSuccessListener<Uri>() {
                    @Override
                    public void onSuccess(Uri uri) {
                        String downloadUrl = uri.toString();
                        Log.d("tag", downloadUrl);
                        FriendlyMessage friendlyMessage = new FriendlyMessage(null, mUsername, downloadUrl);
                        mMessagedatabaseReference.push().setValue(friendlyMessage);
                        //Toast.makeText(ChatActivity.this, ), Toast.LENGTH_LONG).show();

                    }
                });
            }
        });

    }
}
雷诺塔内克

我没有仔细研究你的代码,但人们可能会认为“等价于”

实时数据库push()其中“创建一个参考方法自动生成的子位置

Firestoreadd()方法“将具有指定数据的新文档添加到集合中,并自动为其分配文档 ID ”。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

什么是JS push,concat,unshift的Java等效项?

来自分类Dev

JSON 实时搜索。结果项 onclick 事件未触发。为什么?

来自分类Dev

JavaScript .one事件等效项?需要检查第一个转换transitionEnd何时触发

来自分类Dev

什么是C等效项?

来自分类Dev

LibreOffice的RTD等效项

来自分类Dev

UWP的DrawingVisual等效项

来自分类Dev

Java内部的等效项

来自分类Dev

CGContextSelectFont等效项

来自分类Dev

Firemonkey MouseToCell等效项

来自分类Dev

CountDownTimer Java等效项

来自分类Dev

SystemVerilog接口的“ this”等效项

来自分类Dev

异步的语义等效项

来自分类Dev

ServiceStack OnDeserialized等效项

来自分类Dev

斯威夫特等效项“?:”

来自分类Dev

dataLayer.push()不会触发HTTP请求

来自分类Dev

dataLayer.push()不会触发HTTP请求

来自分类Dev

TCL中的ifdef等效项

来自分类Dev

Windows Home Server等效项

来自分类Dev

C ++模板别名的等效项

来自分类Dev

Alert(getElementById)jQuery等效项

来自分类Dev

字典的XML RPC等效项

来自分类Dev

JSON元帅的Stringer等效项

来自分类Dev

Ruby中的charCodeAt()等效项

来自分类Dev

Windows Phone的GroupBy等效项

来自分类Dev

基于范围的for循环等效项

来自分类Dev

什么是getScript的dart等效项

来自分类Dev

指向struct的Typedef等效项

来自分类Dev

wstring在C中的等效项

来自分类Dev

Android Gradle runtimeClasspath等效项