Android聊天,添加新消息显示

时间:2020-06-19 22:19:32

标签: java android

我正在使用Firebase和recyclerview进行聊天活动。我遇到了一点问题。当出现新消息时,请使用notifyItemInserted,然后使用smoothScrollToPosition。当很少收到第一条消息时(直到屏幕上未充满消息),它们显示的都非常流畅,看起来与Facebook Messenger中的相同,但是当滚动到新消息时,弹出的消息超出了我们的屏幕。眨眼看起来不好。我认为这与通过recyclerview进行视图回收或平滑滚动有关,但是我不知道该如何处理。

一些询问的代码:

var usedParts = new Dictionary<string, int>();

.....
foreach (var rep in u.PartsUsed)
{
      if (!usedParts.ContainsKey(rep.Repair.Name))
      {
          usedParts[rep.Repair.Name] = rep.RepairPartQuantity;
      }
      else
      {
          usedParts[rep.Repair.Name] += rep.RepairPartQuantity;
      }
}

foreach (var kvp in usedParts)
    {
        str.AppendFormat(str.Length > 0 ? Environment.NewLine + "{0} - {1}" : "{0} - {1}", kvp.Value, kvp.Key);
        totalCount += kvp.Value;
    }

你们能和我分享一些技巧吗? 谢谢

1 个答案:

答案 0 :(得分:1)

您的问题中有很多未知的地方,但是通常来说,如果您使用的是RecyclerView(如前所述),则可以通过在reverseLayout中将LinearLayoutManager设置为“ true”来改善UI体验(我猜)。这样做会使您的消息显示在列表的底部。如果您进行分页,这仍然有其自身的问题,具体取决于您如何进行分页等。


更新(下面的聊天要点):

  1. 使用反向LinearLayoutManager(构造函数的选项)-与stackFromBottom不同
  2. 将数据添加到数据收集的开头(.add(0,...)
  3. 在适配器上调用notifyItemInserted(0)