【问题标题】:How to set focus on the last element of an ArrayList<> in kotlin (Android)?如何在 kotlin (Android) 中将焦点设置在 ArrayList<> 的最后一个元素上?
【发布时间】:2021-02-04 14:58:50
【问题描述】:

我是 kotlin 的新手,在如何将滚动焦点设置在 ArrayList&lt;tags&gt; 的最后一个元素上需要一些帮助,看看我的代码

  <androidx.recyclerview.widget.RecyclerView
    android:id="@+id/RVTags"
    android:layout_width="match_parent"
    android:layout_height="0dp"
    android:layout_marginBottom="12dp"
    android:visibility="gone"
    app:layout_constraintBottom_toTopOf="@id/startStop"
    app:layout_constraintTop_toBottomOf="@id/ui_power_range_inventory_layout"
    />
class FindTagsAdapter internal constructor(
    private val ServicesList: ArrayList<Tag>
) :
    RecyclerView.Adapter<FindTagViewHolder>() {

    override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): FindTagViewHolder {
        return FindTagViewHolder(LayoutInflater.from(parent.context), parent)
    }

    override fun onBindViewHolder(holder: FindTagViewHolder, position: Int) {
        holder.bind(ServicesList[position])
    }

    override fun getItemCount(): Int {
        return ServicesList.size
    }
}

【问题讨论】:

  • 您想滚动到RecyclerView 中的最后一个元素吗?
  • 是的,滚动总是停留在最后一个元素上

标签: android kotlin arraylist focus xlm


【解决方案1】:

您可以使用smoothScrollToPosition() 函数滚动到列表的最后一项。

您可以在您的类中为该操作创建一个函数。

在我的代码中,我假设您使用两个全局变量来存储您的 RecyclerView 引用和您的项目列表,并且您已经初始化了您的 RecyclerView

private var recyclerView: RecyclerView? = null
private var servicesList = arrayListOf<Tag>()

...

private fun focusLastItem() 
{
    if (servicesList.isNotEmpty()) {
        recyclerView?.smoothScrollToPosition(serviceList.size - 1)
    }
}

然后,您可以在每次更新列表时调用focusLastItem 函数。

【讨论】:

    【解决方案2】:

    解决我的问题:

    RecyclerView.scrollToPosition(var.lastIndex)

    这样它会自动滚动到底部。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-10-26
      • 2018-10-05
      • 2021-02-17
      • 1970-01-01
      • 2012-06-18
      • 2011-01-24
      • 1970-01-01
      相关资源
      最近更新 更多