RecyclerView 中的项目正在获取先前项目的数据

Items in a RecyclerView are getting the data of previous items

该应用程序有一个数据库,其中的项目具有标记为整数的位置列,显示在 RecyclerView 中。

如果数据库列中的任何整数为零,则不应显示该整数,为此我添加了 if 语句来检查每个接收到的整数以及接收到的整数是否为零,那么就不应该显示了。

private int journeyPosition;
...

  @Override
    public void onBindViewHolder(@NonNull JourneyAdapter.JourneyViewHolder holder, int position) {
        journeyPosition = holder.getAdapterPosition();
        JourneyObject journeyObject = journeyObjectList.get(holder.getAdapterPosition());

        if (journeyObject.getLocation1() != 0){
            holder.location1.setText(Integer.toString(journeyObject.getLocation1()));
        }
        if (journeyObject.getLocation2() != 0) {
            holder.location2.setText(Integer.toString(journeyObject.getLocation2()));
        }
        if (journeyObject.getLocation3() != 0) {
            holder.location3.setText(Integer.toString(journeyObject.getLocation3()));
        }
        if (journeyObject.getLocation4() != 0) {
            holder.location4.setText(Integer.toString(journeyObject.getLocation4()));
        }
        if (journeyObject.getLocation5() != 0) {
            holder.location5.setText(Integer.toString(journeyObject.getLocation5()));
        }

目前,如果所有位置都大于零,则代码可以正常工作,但由于某些项目中的某些位置为零,因此这些整数是从 RecyclerView 的其他具有数字的项目中获取的字段中存在大于零的值。

我还没搞明白为什么数据是从之前的适配器位置接收的。 如果有什么不清楚的,请具体说明。

谢谢

请记住,这是一个 recycler 视图。滚动到屏幕上的视图可能已被使用。绑定视图时,不要只使用 if 语句。使用 if/else 语句,以便在不显示任何内容时清除旧数据。

还有一个提示,当您发现自己编写了一堆看起来像 copy-pasted 的代码时,请找到一种通过迭代来完成它的方法。您的代码将更清晰、更简洁、更易于阅读且不易出错。