Necesita firebase Retorno hasta la fecha sólo una vez por día y no después de cada mensaje

JMB:

Tengo un chat en mi aplicación y me gustaría hacerlo de modo que aparezca la fecha sólo una vez por día por encima del primer mensaje enviado independientemente de qué usuario envió por primera vez. Estoy almacenando la fecha en Firebase y recuperar, estuvo bien, pero necesito para la fecha sólo volver una vez si es un nuevo día y no después de cada mensaje enviado.

Ahora mismo estoy recibiendo así después de cada mensaje enviado que no es lo que me gustaría. Debe volver una sola vez, por encima primer mensaje enviado si se trata de un nuevo día. De lo contrario el tiempo justo.

Si tengo que añadir mi clase POJO para chatear que puedo hacer eso o mi archivo XML.

M introducir descripción de la imagen aquíessageAdapter

public class MessageAdapter extends RecyclerView.Adapter<MessageAdapter.ViewHolder> {

    private static final int MSG_TYPE_LEFT = 0;
    private static final int MSG_TYPE_RIGHT = 1;

    private Context mContext;
    private List<Chat> mChat;
    private String imageurl;

    public MessageAdapter(Context mContext, List<Chat> mChat, String imageurl) {
        this.mChat = mChat;
        this.mContext = mContext;
        this.imageurl = imageurl;
    }

    @NonNull
    @Override
    public MessageAdapter.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        if (viewType == MSG_TYPE_RIGHT) {
            View view = LayoutInflater.from(mContext).inflate(R.layout.chat_item_right, parent, false);
            return new ViewHolder(view);
        } else {
            View view = LayoutInflater.from(mContext).inflate(R.layout.chat_item_left, parent, false);
            return new ViewHolder(view);
        }
    }

    @Override
    public void onBindViewHolder(@NonNull MessageAdapter.ViewHolder holder, int position) {

        Chat chat = mChat.get(position);

        holder.show_message.setText(chat.getMessage());
        if (imageurl.equals("default")) {
            holder.profile_image.setImageResource(R.mipmap.ic_launcher);
        } else {
            Glide.with(mContext).load(imageurl).into(holder.profile_image);
        }

        if (position == mChat.size() - 1) {
            if (chat.isIsseen()) {
                holder.text_seen.setText("Seen");
            } else {
                holder.text_seen.setText("Delivered");
            }
        } else {
            holder.text_seen.setVisibility(View.GONE);
        }

        holder.message_time.setText(chat.getTime());
        holder.date.setText(chat.getDate());
    }

    @Override
    public int getItemCount() {
        return mChat.size();
    }

    static class ViewHolder extends RecyclerView.ViewHolder {

        TextView show_message, text_seen, message_time, date;
        ImageView profile_image;

        ViewHolder(View view) {
            super(view);

            show_message = view.findViewById(R.id.show_message);
            profile_image = view.findViewById(R.id.profile_image);
            text_seen = view.findViewById(R.id.text_seen);
            message_time = view.findViewById(R.id.message_time);
            date = view.findViewById(R.id.date);
        }
    }

    @Override
    public int getItemViewType(int position) {
        FirebaseUser firebaseUser = FirebaseAuth.getInstance().getCurrentUser();
        if (mChat.get(position).getSender().equals(firebaseUser.getUid())) {
            return MSG_TYPE_RIGHT;
        } else {
            return MSG_TYPE_LEFT;
        }
    }
}
Noviembre Özdemir:

si no me equivoco. Usted puede tratar de esta manera:

holder.date.setText(chat.getDate());
if(position == 0){
   holder.date.setVisibility(View.VISIBLE);
}else {
   Chat previous = mChat.get(position - 1);
   if(previous.getDate().equals(chat.getDate())){
      holder.date.setVisibility(View.GONE);
   }else{
    holder.date.setVisibility(View.VISIBLE);
   }
}

Supongo que te gusta

Origin http://10.200.1.11:23101/article/api/json?id=391865&siteId=1
Recomendado
Clasificación