如何在Firebase Recycler Adapter中膨胀不同的布局

问题描述

我有一个聊天活动,并尝试为发送者和接收者添加不同的布局。到目前为止,我可以检索Firebase实时数据库的数据,但是发送方和接收方具有相同的布局,我创建了第二个布局,并尝试使用viewType,但无法弄清楚如何将当前用户分配给cretin布局,请帮忙:(

聊天活动

if (!employee)
    {



   FirebaseRecyclerOptions options = new FirebaseRecyclerOptions.Builder<ChatMessageModel>()
                .setQuery(FirebaseDatabase.getInstance().getReference().child("client_emp_messages")
                        .child(formattedDate+uid),ChatMessageModel.class)
                .build();

    }

    else
    {
        // employee
        Bundle bundle = getIntent().getExtras();
        String d = bundle.getString("path_to_client_realtime_db");


        options = new FirebaseRecyclerOptions.Builder<ChatMessageModel>()
                .setQuery(FirebaseDatabase.getInstance().getReference().child("client_emp_messages")
                        .child(d),ChatMessageModel.class)
                .build();


    }

    adapter = new ChatAdapter(options);
    nMessageList.setAdapter(adapter);

聊天适配器

    public class ChatAdapter extends FirebaseRecyclerAdapter<ChatMessageModel,ChatAdapter.ChatViewHolder>
    {
 

   public ChatAdapter(@NonNull FirebaseRecyclerOptions<ChatMessageModel> options) {
        super(options);
    }

    @Override
    protected void onBindViewHolder(@NonNull ChatViewHolder holder,int i,@NonNull ChatMessageModel model) {
            holder.nMessage_text_view.setText(model.getMessage());
    }

    @NonNull
    @Override
    public ChatViewHolder onCreateViewHolder(@NonNull ViewGroup parent,int viewType) {


            View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.message_single_layout,parent,false);
            return new ChatViewHolder(view);


    }

    class ChatViewHolder extends RecyclerView.ViewHolder
    {
        TextView  nMessage_text_view;

        public ChatViewHolder(@NonNull View itemView) {
            super(itemView);

            nMessage_text_view = itemView.findViewById(R.id.message_text_view);

        }
    }
}

解决方法

我建议您进行一种布局。例如右侧的发送方和左侧的接收方。您可以在线性布局或相对布局的帮助下使用它。并将其可见性设置为“不可见”。 因此,从数据库下载消息数据并通过用户ID令牌进行检查。如果数据与当前用户令牌匹配,则将其显示在右栏中,并设置可见性为Visible,反之亦然。

为此,您只需要将用户令牌和消息一起存储在数据库中。

希望您能理解。谢谢

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...