如何在 RecyclerView 的适配器本身中获得先前的位置?

How to get previous position in RecyclerView's Adapter itself?

我有一个 RecyclerView,在它的布局中有一个视图 "tvDateGrouped",我希望它仅在当前位置日期和上一个位置日期不同时显示。 下面是我试过的代码,但它不起作用

此代码位于适配器内部 class、onBind() 方法内部

  if (position != 0 && transactions[position].date == 
    transactions[holder.adapterPosition.minus(1)].date) {
                holder.view.tvDateGrouped.visibility = View.GONE
            } else {
                holder.view.tvDateGrouped.text = formattedDateString
            }

如果我改变位置 != 1 ,应用程序会崩溃

下面是应用崩溃时的代码

  if (position != 1 && transactions[position].date == 
        transactions[holder.adapterPosition.minus(1)].date) {
                    holder.view.tvDateGrouped.visibility = View.GONE
                } else {
                    holder.view.tvDateGrouped.text = formattedDateString
                }

编辑:我已将代码更改如下,但应用程序现在崩溃了-

if ((transactions[position].date == transactions[position - 1].date) && 
(position > 0)) {
    holder.view.tvDateGrouped.visibility = View.GONE
} else {
    holder.view.tvDateGrouped.visibility = View.VISIBLE
    holder.view.tvDateGrouped.text = formattedDateString
}

请帮我解决这个问题

position0 时,您的崩溃就会发生,然后 position - 1 将为 -1,这是一个无效索引,您将获得运行时异常。

但为什么第一个解决方案不起作用?一个明显的原因是您忘记了再次使文本可见。所以将其更改为:

 if (position > 0 && transactions[position].date == transactions[position - 1].date) {
    holder.view.tvDateGrouped.visibility = View.GONE
} else {
    holder.view.tvDateGrouped.visibility = View.VISIBLE
    holder.view.tvDateGrouped.text = formattedDateString
}