services play google auth android firebase firebase-database firebaseui

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 ?