如何在 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
}
请帮我解决这个问题
当 position
为 0
时,您的崩溃就会发生,然后 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
}
我有一个 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
}
请帮我解决这个问题
当 position
为 0
时,您的崩溃就会发生,然后 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
}