【问题标题】:Items are misplaced in recyclerView after scrolling up or down向上或向下滚动后,项目在 recyclerView 中放错了位置
【发布时间】:2018-07-13 17:15:50
【问题描述】:

我正在开发一个聊天应用程序。我正在从 firebase 获取消息。在向上/向下滚动之前准确放置消息。但是当我滚动时,所有项目都放错了位置。

这是我的 OnBindViewHolder

 public void onBindViewHolder(final MessageViewHolder viewHolder, int i) {
    String senderId=mAuth.getCurrentUser().getUid();
    Messages messages=mMessageList.get(i);
    String fromUserId=messages.getFrom();
    String fromMessageType=messages.getType();}

我正在另一个活动中加载消息。 他们第一次正确加载但滚动后错位。请帮我。我无法解决这个问题。谢谢

【问题讨论】:

    标签: android android-recyclerview android-viewholder


    【解决方案1】:

    这可能是因为滚动回收器视图项目的 id 后弄乱了 尝试覆盖适配器中的以下方法

    @Override
    public long getItemId(int position) {
                return position;
    }
    
    @Override
    public int getItemViewType(int position) {
           return 1;
    }
    

    【讨论】:

    • 是的,我有这些方法,但仍然出现问题
    • 您使用的是 Firebase Firestore 还是实时数据库?
    • 对不起,我忘了添加 getItemId() 方法。问题解决了。非常感谢。上帝保佑你:)
    • 很高兴为您提供帮助。您当然可以投票并批准感谢的答案。 :)
    • 您不应该为每个职位返回唯一的itemViewType。这违反了 RecyclerView 模式的基本行为(即视图回收)。您基本上通过强制Adapter 为每个位置创建新的ViewHolder 来消除性能。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-09
    • 2015-06-10
    • 1970-01-01
    • 2023-04-03
    • 1970-01-01
    • 2022-01-01
    • 2017-01-18
    相关资源
    最近更新 更多