gpt4 book ai didi

android - 在 FirebaseRecyclerAdapter 上应用过滤器

转载 作者:IT王子 更新时间:2023-10-28 23:32:53 26 4
gpt4 key购买 nike

我正在使用 FirebaseRecyclerAdapter 来显示聊天消息。

private void attachRecyclerViewAdapter() {
lastFifty = mChatRef.limitToLast(50).;
mRecyclerViewAdapter = new FirebaseRecyclerAdapter<Chat, ChatHolder>(
Chat.class, R.layout.message, ChatHolder.class, lastFifty) {

@Override
public void populateViewHolder(ChatHolder chatView, Chat chat, int position) {
chatView.setName(chat.getName());
chatView.setText(chat.getText());
chatView.setTimeLocation(chat.getTime());
FirebaseUser currentUser = mAuth.getCurrentUser();

if (currentUser != null && chat.getUid().equals(currentUser.getUid())) {
chatView.setIsSender(true);
} else {
chatView.setIsSender(false);
}
}
};

我有一个包含特定用户列表的列表。我想应用过滤器以仅查看来自这些特定用户的消息。我该怎么办?

最佳答案

您可以使用用户 ID 对节点创建消息。例如 messages->'uid1-uid2'->...

为了防止哪个是一阶 uid,就像下面的 messageId 生成器代码所做的那样:

public static String getMessageId(String id1, String id2){
String messageId;

if(id1.compareTo(id2) < 0){
messageId = id1 + "-" + id2;
}else if(id1.compareTo(id2) > 0) {
messageId = id2 + "-" + id1;
}else{
messageId = id1;
}

return messageId;
}

当你想查看用户和你自己的聊天记录时,获取用户的id并生成messageId = getMessageId(id1, id2);或 messageId = getMessageId(id2, id1); 给出相同的结果,因为顺序不影响结果。

然后从节点messages -> messageId

调用消息

P.S. 你应该按照我的描述重新构建你的消息节点。

编辑

您可以将 messageId 转换为 md5 等价于保存字符。

改变一下

return messageId;

return md5(messageId);

md5 在哪里:

public static String md5(final String s) {
try {
// Create MD5 Hash
MessageDigest digest = java.security.MessageDigest
.getInstance("MD5");
digest.update(s.getBytes());
byte messageDigest[] = digest.digest();

// Create Hex String
StringBuffer hexString = new StringBuffer();
for (int i = 0; i < messageDigest.length; i++) {
String h = Integer.toHexString(0xFF & messageDigest[i]);
while (h.length() < 2)
h = "0" + h;
hexString.append(h);
}
return hexString.toString();

} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
}
return "";
}

关于android - 在 FirebaseRecyclerAdapter 上应用过滤器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38434023/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com