0

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

此代码在适配器类中,在 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
}

请帮我解决这个问题

4

1 回答 1

0

您的崩溃只是发生在什么时候是position无效的索引,您将获得运行时异常。0position - 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
}
于 2020-06-04T17:04:54.717 回答