Android 如何通过单击菜单项使recyclerView滚动到顶部位置?
我需要这样,如果一个点击菜单项“打开所有单词”(看下面),然后视图滚动到顶部位置。 如何从onOptionItemSelected()方法执行此操作,以及在那里键入什么 谢谢你的帮助Android 如何通过单击菜单项使recyclerView滚动到顶部位置?,android,kotlin,android-recyclerview,android-optionsmenu,linearlayoutmanager,Android,Kotlin,Android Recyclerview,Android Optionsmenu,Linearlayoutmanager,我需要这样,如果一个点击菜单项“打开所有单词”(看下面),然后视图滚动到顶部位置。 如何从onOptionItemSelected()方法执行此操作,以及在那里键入什么 谢谢你的帮助 @AndroidEntryPoint class VocabularyFragment : Fragment(R.layout.recycler_layout), VocabularyAdapter.OnVocItemClickListener { private val viewModel: V
@AndroidEntryPoint
class VocabularyFragment : Fragment(R.layout.recycler_layout),
VocabularyAdapter.OnVocItemClickListener {
private val viewModel: VocabularyViewModel by viewModels()
private lateinit var searchView: SearchView
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
val binding = RecyclerLayoutBinding.bind(view)
val vocabularyAdapter = VocabularyAdapter(this)
binding.apply {
recyclerView.apply {
adapter = vocabularyAdapter
layoutManager = LinearLayoutManager(requireContext())
setHasFixedSize(true)
itemAnimator = null // ХЗ НАДО ЛИ
}
}
viewModel.words.observe(viewLifecycleOwner) {
vocabularyAdapter.submitList(it)
}
setHasOptionsMenu(true)
}
override fun onOptionsItemSelected(item: MenuItem): Boolean {
return when (item.itemId) {
R.id.action_choose_all_categories -> {
viewModel.onChooseCategoryClick(0)
// HERE I NEED TO call the recycler view and make it scroll to the top to the 1st position
true
}
//other items ...
. 顶部是位置
0
。谢谢。但是我如何在onOptionItemSelected()中调用recyclerView上的任何内容呢?将您的RecyclerLayoutBinding
存储在lateinit var
属性中,这样您就可以在onOptionItemSelected()方法中引用binding.recyclerView
。private lateinit var mBinding=RecyclerLayoutBinding.bind(//此处我无法写入视图)在“lateinit”字的红色下划线处加上错误“'lateinit'修饰符不允许在具有初始值设定项的属性上使用”Yess,您会看到此错误,因为在以后指定变量值时会使用lateinit修饰符。使用,私有lateinit var mBinding=RecyclerLayoutBinding.bind(),您所做的与lateinit的用途完全相反。您应该做的是,私有lateinit var mBinding,然后在您的OnView中指定mBinding的值,创建如下mBinding=RecyclerLayoutBinding.bind()