所以Firebase具有离线功能。
因此,每当我发送任何文本消息时,只要我单击“发送”,它就会显示在我的设备上。它就像一个符咒。
我的问题是,当我尝试发送图像时,情况不一样。即使我在线,图像也会首先上传到Firebase存储。然后图像url将被存储到firebase数据库中。在那之后,它被展示给我看。这需要时间,具体取决于文件大小。我一发送图像并在后台上传,是否就可以在设备上显示图像?
我有一个适配器类,在recyclerView中检索数据。
以下是我如何将图像添加到视图中(这是在adapter类中):
@Override
public void onBindViewHolder(final RecyclerView.ViewHolder holder, final int position) {
switch (holder.getItemViewType()){
case 1:
//for text messages
ViewHolder1 viewHolder1 = (ViewHolder1)holder;
viewHolder1.Text.setText(messageList.get(position).getMessage());
break;
case 2:
//for images
ViewHolder2 viewHolder2 = (ViewHolder2)holder;
Glide.with(viewHolder2.Image.getContext())
.load(messageList.get(position).getMessage())
.crossFade()
.diskCacheStrategy(DiskCacheStrategy.ALL)
.into(viewHolder2.Image);
break;
}
}
这是我上传它的方式(这是在聊天活动课上):
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if(requestCode == CHOOSE_IMAGE && resultCode == Activity.RESULT_OK && data!=null && data.getData()!=null){
uriProfileImage = data.getData();
final StorageReference profileImageRef = FirebaseStorage.getInstance().getReference("message/"+System.currentTimeMillis()+"jpg");
if (uriProfileImage!=null){
profileImageRef.putFile(uriProfileImage).addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
@Override
public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
profileImageRef.getDownloadUrl().addOnSuccessListener(new OnSuccessListener<Uri>() {
@Override
public void onSuccess(Uri uri) {
Uri downloadUrl = uri;
profileImageUrl = downloadUrl.toString();
Map messageMap = new HashMap();
messageMap.put("Message", profileImageUrl);
messageMap.put("Type", 2);
Map messageUserMap = new HashMap();
messageUserMap.put(user_ref+"/"+push_id,messageMap);
mRootRef.updateChildren(messageUserMap, new DatabaseReference.CompletionListener() {
@Override
public void onComplete(@Nullable DatabaseError databaseError, @NonNull DatabaseReference databaseReference) {
if (databaseError!=null){
}
}
});
}
});
}
})
});
}
}
}
希望我清楚。任何帮助都将不胜感激。
当用户选择要上传的图像时,您可以同时执行两个操作。首先,开始上传到存储器,然后,获取图像并将其添加到视图中。
然后,您可以立即向用户提供反馈并显示图像,而无需首先往返于服务器。
我正在开发一款使用Firebase实时数据库和存储的聊天应用程序。 目前我使用这种方法发送和接收图像: 在“发送”按钮上单击:图库的意图 问题是高质量的图像超过1MB。一旦它们被发送,应用程序在滚动聊天时会变得非常慢,然后一些图像会从ImageView中消失。 有没有办法让图像检索更顺畅、更快?
我尝试使用mvp开发一对一的聊天应用程序,当应用程序第一次运行时,聊天工作正常,消息发送给用户。问题是,当我尝试注册另一个帐户并尝试发送消息时,firebase创建了两个不同的聊天室,但我无法获得消息,因为第二个用户没有检测到聊天室已经创建并创建了另一个聊天室,请帮助我?这是我试图发送消息的代码: 最终字符串room_type_1=chat.getSenderUID()+“_”+chat.getR
我正在尝试使用node.js、socket.io和express制作一个简单的聊天应用程序。但是,如果我单击main.jade文件中的send按钮,页面会刷新,并且不会出现任何消息。我在Firebug中也遇到这个错误: 加载页面时,与ws:/127.0.0.1:3000/socket.io/?eio=2&transport=websocket&sid=d_hnmpdxhed-j7lraaah的连接
我希望基本上在我的应用程序内翻拍Kik。对于我在firebase聊天应用程序上看到的大多数指南,都有一个主要的消息节点,然后在该节点下面有一个扇出,每个用户都有引用主列表中消息的消息。 根据目前我的Firebase的布局方式,实现类似以下内容会更容易: 因此,当用户向对方发送消息时,我会更新发送者和用户下面的“聊天消息”节点。 有什么理由不这样做吗?我看到每个人都按照我描述的第一种方式进行,但我看
用来显示聊天消息哪个更好?据我所知,RecyclerView支持更多的自定义视图方向(而且通常被认为性能优越),但由于聊天本质上是类似列表的,使用ListView会更好吗? 这对这个用例有什么不同吗?
我正在Android上制作一个聊天应用程序,它使用谷歌Firebase来存储用户相互写入的消息。为了向用户显示这些消息,我从数据库中读取它们,并使用ListAdapter将它们组织成自定义的ListView。直到我更新了我的依赖项,特别是Firebase ui到: 现在,构造列表适配器的代码不起作用,如下所示: 为了解决这个问题,我更新了代码以符合新的firebase ui要求,使代码成为: 这段