gpt4 book ai didi

java - 处理 FirebaseRecyclerAdapter 中的位置

转载 作者:搜寻专家 更新时间:2023-11-01 08:23:51 25 4
gpt4 key购买 nike

我已经摆弄 FirebaseRecyclerAdapter 有一段时间了。它确实是一个非常好的工具,可以使用其所有功能快速填充自定义列表/回收器 View 。但是,我想问的一件事是如何处理适配器本身内部项目的位置。

例如,我想模仿 WhatsApp 在聊天中的这个小功能。

enter image description here

因此,在群聊设置中,如果一个人连续发送一条以上的连续消息,则该特定人的显示名称将不可见。

根据我的理解,它背后的逻辑是:如果发送消息的人对于 (position - 1) 是相同的,那么我只是让 (position) 的 EditText 不可见。当然,这是为了防止出现包含最少重复信息的超长文本流。

假设来自 Firebase 数据库的 JSON 树如下所示。

{
"messages" : {
"pushed_id_1" : {
"message_sender" : "AppleJuice",
"message_text" : "Are you free?"
},
"pushed_id_2" : {
"message_sender" : "AppleJuice",
"message_text" : "On Saturday I mean..."
}
}
}

FirebaseRecyclerAdapter 看起来像这样。

FirebaseRecyclerAdapter<Message, MessageViewHolder> adapter = new FirebaseRecyclerAdapter<Message, MessageViewHolder>(Message.class, R.layout.message_item, MessageViewHolder.class, myRef) {

@Override
protected void populateViewHolder(MyBookingsViewHolder viewHolder, Booking model, int position) {
viewHolder.messageSender.setText(model.getMessage_sender());
viewHolder.messageText.setText(model.getMessage_text());

//put some code here to implement the feature that we need
}
};
messages_recycler_menu.setAdapter(adapter);

我走得最远的是在 FirebaseRecyclerAdapter 中使用 getItemCount() 方法,但我仍然无法实现模仿我之前谈到的 Whatsapp 的功能。

有没有什么方法可以做到这一点?还是我在这个例子中遗漏了一些非常重要的东西?

最佳答案

String lastSender=null; //or some random string

FirebaseRecyclerAdapter<Message, MessageViewHolder> adapter =
new FirebaseRecyclerAdapter<Message, MessageViewHolder>
(Message.class, R.layout.message_item, MessageViewHolder.class, myRef) {

@Override
protected void populateViewHolder(MyBookingsViewHolder viewHolder, Booking model, int position) {
if (model.getMessage_sender().equals(lastSender){ //check if the current sender is same as the last sender
viewHolder.messageText.setText(model.getMessage_text()); //setting only message text
viewHolder.messageSender.setVisibility(View.GONE); //if required
}else{
lastSender=model.getMessage_sender();//updating the lastSender value
viewHolder.messageSender.setVisibility(View.VISIBLE); //if required
viewHolder.messageSender.setText(model.getMessage_sender());
viewHolder.messageText.setText(model.getMessage_text());
}
//put some code here to implement the feature that we need
}

};

messages_recycler_menu.setAdapter(adapter);

关于java - 处理 FirebaseRecyclerAdapter 中的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47348198/

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