android - play - Aplicar un filtro en FirebaseRecyclerAdapter
firebaseui version firebase play services version (1)
Puede crear mensajes con nodos de pares de id. De usuario. Por ejemplo, mensajes -> ''uid1-uid2'' -> ...
Para evitar que sea de primer orden uids alphatecially como lo hace el siguiente código del generador de 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;
}
Cuando desee ver el historial de chat entre un usuario y usted mismo, obtenga el ID del usuario y genere messageId = getMessageId(id1, id2); or messageId = getMessageId(id2, id1);
messageId = getMessageId(id1, id2); or messageId = getMessageId(id2, id1);
da el mismo resultado ya que la orden no afecta el resultado.
A continuación, llame a los mensajes desde los mensajes del nodo -> messageId
PD : debes reestructurar tu nodo de mensajes como lo describo.
EDITAR
Puede convertir messageId a md5 equivalente para guardar caracteres.
solo cambia
return messageId;
a
return md5(messageId);
donde md5 es:
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 "";
}
Estoy usando FirebaseRecyclerAdapter
para mostrar mensajes de chat.
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);
}
}
};
Tengo una lista que contiene una lista de usuarios específicos. Me gustaría aplicar filtro para ver solo mensajes de esos usuarios específicos. Que debería hacer ?