Не могу разыграть несколько предметов в рециркуляции с их ID - PullRequest
0 голосов
/ 01 марта 2020

Я пытаюсь привести мой RecyclerView идентификатор макета, чтобы не повторять код

У меня есть 3 RecyclerView в моем макете, я хочу иметь только один метод, который берет идентификаторы RecyclerView и устанавливает их без их адаптера.

Я сделал следующее:

override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
    super.onViewCreated(view, savedInstanceState)
    setupRecyclerViewLayoutManager(R.id.first_rv)
    setupRecyclerViewLayoutManager(R.id.second_rv)
    setupRecyclerViewLayoutManager(R.id.third_rv)

}

private fun setupRecyclerViewLayoutManager(recyclerViewId:Int){
    val recyclerView = recyclerViewId as RecyclerView
    recyclerView.layoutManager = LinearLayoutManager(requireActivity(),LinearLayoutManager.HORIZONTAL,false)
    recyclerView.setHasFixedSize(true)
}

Но этот код завершается ошибкой при приведении

java .lang.ClassCastException: java .lang.Integer не может быть приведен к androidx.recyclerview.widget.RecyclerView в com.ui.home.HomeFragment.setupRecyclerViewLayoutManager (HomeFragment.kt: 36) в com.ui. home.HomeFragment.onViewCreated (HomeFragment.kt: 29)

Почему я не могу привести целочисленные идентификаторы этих RecyclerView?

Ответы [ 2 ]

1 голос
/ 01 марта 2020

Поскольку вы передаете Int id, а не RecyclerView.

Вы можете сделать так:

private fun setupRecyclerViewLayoutManager(view: View, recyclerViewId:Int){
    val recyclerView = view.findViewById<RecyclerView>(recyclerViewId)
    recyclerView.layoutManager = LinearLayoutManager(requireActivity(),LinearLayoutManager.HORIZONTAL,false)
    recyclerView.setHasFixedSize(true)
}

Использование:

setupRecyclerViewLayoutManager(view,R.id.first_rv)
1 голос
/ 01 марта 2020
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
    super.onViewCreated(view, savedInstanceState)

    setupRecyclerViewLayoutManager(view.findViewById<RecyclerView>(R.id.first_rv))
}

private fun setupRecyclerViewLayoutManager(recyclerView: RecyclerView){
    recyclerView.layoutManager = LinearLayoutManager(requireActivity(),LinearLayoutManager.HORIZONTAL,false)
    recyclerView.setHasFixedSize(true)
}

Вы должны сделать это так

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...