Не удается получить доступ к переменным ViewModel внутри фрагмента - PullRequest
0 голосов
/ 29 апреля 2020

Мне нужен доступ к переменным ViewModel внутри Fragment, вот мой код:

class FacetFragment : Fragment() {

override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
    return inflater.inflate(R.layout.fragment_facet, container, false)
}

override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
    super.onViewCreated(view, savedInstanceState)
    val viewModel = ViewModelProviders.of(requireActivity())[ViewModel::class.java]

    val facetList: RecyclerView = view.findViewById(R.id.facetList)

    facetList.let {
        it.adapter = viewModel.adapterFacet
        it.layoutManager = LinearLayoutManager(requireContext())
        it.autoScrollToStart(viewModel.adapterFacet)
    }
    (requireActivity() as AppCompatActivity).let {
        it.setSupportActionBar(view.findViewById(R.id.toolbar))
        it.supportActionBar?.setDisplayHomeAsUpEnabled(true)
    }
}

}

И у меня есть ошибка для этой строки: it.adapter = viewModel.adapterFacet, но переменная adapterFacet существует во ViewModel ... Как получить эту переменную?

Буду очень признателен за вашу помощь:)

1 Ответ

0 голосов
/ 29 апреля 2020

Сделать viewModel.adapterFacet внутренним или общедоступным c, вы сможете получить к нему доступ.

Примечания:

1 - вы создаете утечку памяти, сохраняя адаптер внутри модели представления, выставляете список, необходимый для заполнения вашего адаптера вашим фрагментом и сохранения экземпляра адаптера внутри вашего фрагмента вне модели представления

2 - вы можете использовать apply вместо let и remove it. или использовать с методом

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