我希望当用户发送或接收图像时,他们可以单击该图像,然后在其他活动中查看该图像。因此,我在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的新手。非常感谢您的帮助。