如何在其他活动中加载Firebase图像

时间:2019-03-21 17:33:48

标签: java android firebase firebase-realtime-database

我希望当用户发送或接收图像时,他们可以单击该图像,然后在其他活动中查看该图像。因此,我在MessageAdapter.java的图像中添加了一个点击监听器,就像这样

void bind(Messages message) {

            String user_id = message.getFrom();
            String message_type = message.getType();


            if (message_type.equals("text")) {


                messageText.setText(message.getMessage());
                // Format the stored timestamp into a readable String using method.
                timeText.setText(DateUtils.formatDateTime(message.getTime()));
                mSentImage.setVisibility(View.INVISIBLE);
            }else {
                messageText.setVisibility(View.INVISIBLE);
                Picasso.with(mSentImage.getContext()).load(message.getMessage()).networkPolicy(NetworkPolicy.OFFLINE).into(mSentImage);

                mSentImage.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View view) {
                        Intent intent = new Intent(view.getContext(), MessageViewerActivity.class);

                        intent.putExtra("message_id", user_id); //i don't know the right value to pass here

                        view.getContext().startActivity(intent);
                    }
                });
            }

我的目的是获取消息ID,然后在下一个活动中检索它,并在我的数据库中引用它,并使用此代码将应该是图像的值加载到图像视图中。

final String user_id = getIntent().getStringExtra("message_id");

    msgImage = findViewById(R.id.MsgImageView);



    mAuth = FirebaseAuth.getInstance();

    mRootRef = FirebaseDatabase.getInstance().getReference();
    mCurrentUserId = mAuth.getCurrentUser().getUid();


    DatabaseReference user_message_push = mRootRef.child("messages").child(mCurrentUserId).child(user_id);

    user_message_push.addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            String type = dataSnapshot.child("type").getValue().toString(); // this line returns null
            String image = dataSnapshot.child("message").getValue().toString();

            if (type.equals("image")){
                Picasso.with(MessageViewerActivity.this).load(image).into(msgImage);

            }else {

            }
        }

        @Override
        public void onCancelled(DatabaseError databaseError) {

        }
    });

}

我在互联网上找不到任何相关信息,也不知道我是否搜索不正确。上面的代码全都来自我的脑海,我还是android的新手。非常感谢您的帮助。

0 个答案:

没有答案