<分区>
我需要使用 firebase 在聊天应用程序中实现输入指示器。 我有这样的逻辑
- 添加一个 textwatcher 监听器并在文本更改监听器中更新名为 typing in firebase db 的字段的标志
然后我想当值改变时它会通知值改变监听器
如果有人有代码实现请分享。
<分区>
我需要使用 firebase 在聊天应用程序中实现输入指示器。 我有这样的逻辑
然后我想当值改变时它会通知值改变监听器
如果有人有代码实现请分享。
最佳答案
请检查下面的代码:`
使结构类似于:(它可能会根据您的需要而有所不同,我只是向您介绍一些东西)
I have an object "isTyping" with Two Keys Let's say "first_user" and "second_user". If you want to check for "second_user" is typing or not this should be the code.
private void checkForOtherUserTypingStatus() {
mMessageThread.child("isTyping").addChildEventListener(new ChildEventListener() {
@Override
public void onChildAdded(DataSnapshot dataSnapshot, String s) {
if (dataSnapshot.getKey().equalsIgnoreCase("second_user") && dataSnapshot.getValue().toString().equals("true")) {
updateTypingViewVisibility(true);
} else if (dataSnapshot.getKey().equalsIgnoreCase("second_user") && dataSnapshot.getValue().toString().equals("false")) {
updateTypingViewVisibility(false);
}
}
@Override
public void onChildChanged(DataSnapshot dataSnapshot, String s) {
if (dataSnapshot.getValue() != null) {
if (dataSnapshot.getKey().equalsIgnoreCase("second_user") && dataSnapshot.getValue().toString().equals("true")) {
updateTypingViewVisibility(true);
} else if (dataSnapshot.getKey().equalsIgnoreCase("second_user") && dataSnapshot.getValue().toString().equals("false")) {
updateTypingViewVisibility(false);
}
}
}
@Override
public void onChildRemoved(DataSnapshot dataSnapshot) {
}
@Override
public void onChildMoved(DataSnapshot dataSnapshot, String s) {
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
}
To update value of "isTyping" > "first_user" (assume that you are typing)
mBinder.etChatMessage.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) {
Map<String, Object> params = new HashMap<>();
params.put("first_user", charSequence.length() > 0);
mMessageThread.child("isTyping").updateChildren(params);
}
@Override
public void afterTextChanged(Editable editable) {
}
});
关于android - 如何在 android firebase 聊天中显示打字指示器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54702778/
相关文章:
python - (401) 未经 python-firebase 授权
Android 8 或更高版本的应用程序在使用 Firebase Performance SDK 的 Android Oreo 上崩溃
android - 在 Firebase 中制作 POJO 时,可以使用 ServerValue.TIMESTAMP 吗?
javascript - 如何在函数中将数据发送到firebase数据库
android - 尝试将 Android 中的 Intent 设置为选项卡
java - 使用 RxJAVA 和 DAO 更新数据库插入的 UI
android - 等待 Camera.PictureCallback
firebase - 如何在 Flutter 中获取嵌套 firebase 数据的所有子数据?