Jin*_*ose 8 android android-edittext firebase firebase-realtime-database
我需要使用firebase在聊天应用程序中实现打字指示器.我有一个逻辑
然后我认为当值更改时,它将通知值更改侦听器
如果任何人有代码实现请分享.
请检查以下代码:`
使结构类似于:(它可能会根据您的需要而有所不同,我只是指给您一些东西)
我有一个带有两个键的对象“isTyping”让我们说“first_user”和“second_user”。 如果你想检查“second_user”是否正在输入,这应该是代码。
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) {
}
});
}
Run Code Online (Sandbox Code Playgroud)
更新“isTyping”>“first_user”的值(假设您正在输入)
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) {
}
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
966 次 |
| 最近记录: |