未连接适配器;跳过布局kotlin



它在启动时加载良好,但当我导航到其他片段并返回Home Fragment时,回收器视图不再加载。当我导航回它时,它与其他碎片一起加载得很好,只有Home Fragment的回收器视图没有显示。logcat中没有显示错误。仅此W/RecyclerView:未连接适配器;跳过布局。有人能帮我吗?我不知道这里到底出了什么问题。提前谢谢各位。

这是我的HOME FRAGMENT 代码

class HomeFragment : Fragment() {
private lateinit var homeViewModel: HomeViewModel
var recyclerView:RecyclerView?=null
lateinit var swipeUpToRefresh:SwipeRefreshLayout
private var viewPager:LoopingViewPager?=null
private var layoutAnimationController:LayoutAnimationController?=null
private var _binding: FragmentHomeBinding? = null
private val binding get() = _binding!!
override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
): View {
homeViewModel =
ViewModelProvider(this).get(HomeViewModel::class.java)
_binding = FragmentHomeBinding.inflate(inflater, container, false)
val root: View = binding.root
val key = requireArguments().getString("restaurant")
initView(root)
refreshPage()
//bind data
homeViewModel.getPopularList(key!!).observe(viewLifecycleOwner, {
val listData = it
val adapter = MyPopularCategoriesAdapter(requireContext(), listData)
recyclerView!!.adapter = adapter
recyclerView!!.layoutAnimation = layoutAnimationController
})
homeViewModel.getBestDealList(key).observe(viewLifecycleOwner, {
val adapter = MyBestDealsAdapter(requireContext(), it, false)
viewPager!!.adapter = adapter
})
return root
}
private fun refreshPage() {
val key = requireArguments().getString("restaurant")
swipeUpToRefresh.setOnRefreshListener {
//bind data
homeViewModel.getPopularList(key!!).observe(viewLifecycleOwner, {
val listData = it
val adapter = MyPopularCategoriesAdapter(requireContext(), listData)
recyclerView!!.adapter = adapter
recyclerView!!.layoutAnimation = layoutAnimationController
})
homeViewModel.getBestDealList(key).observe(viewLifecycleOwner, {
val adapter = MyBestDealsAdapter(requireContext(), it, false)
viewPager!!.adapter = adapter
})
swipeUpToRefresh.isRefreshing = false
}
}
private fun initView(root:View) {
swipeUpToRefresh = root.findViewById(R.id.refresh) as SwipeRefreshLayout
layoutAnimationController = AnimationUtils.loadLayoutAnimation(context, R.anim.layout_item_from_left)
viewPager = root.findViewById(R.id.viewpager) as LoopingViewPager
recyclerView = root.findViewById(R.id.recycler_popular) as RecyclerView
recyclerView!!.setHasFixedSize(true)
recyclerView!!.layoutManager = LinearLayoutManager(context, RecyclerView.HORIZONTAL, false)
}
override fun onResume() {
super.onResume()
viewPager!!.resumeAutoScroll()
}
override fun onPause() {
viewPager!!.pauseAutoScroll()
super.onPause()
}
override fun onDestroyView() {
super.onDestroyView()
_binding = null
}}

我在R.id.nav_home 中将这行代码添加到我的HomeActivity中

val bundle = Bundle()
bundle.putString("restaurant",Common.currentRestaurant!!.uid)
navController.navigate(R.id.nav_home,bundle)

这是我的导航查看

navView!!.setNavigationItemSelectedListener { p0 ->
p0.isChecked = true
drawer!!.closeDrawers()
if (p0.itemId == R.id.nav_sign_out) {
signOut()
} else if (p0.itemId == R.id.nav_restaurant) {
if (menuItemClick != p0.itemId)
navController.popBackStack()
navController.navigate(R.id.nav_restaurant)
} else if (p0.itemId == R.id.nav_home) {
if (menuItemClick != p0.itemId) {
EventBus.getDefault().postSticky(MenuInflateEvent(true))
navController.popBackStack()
val bundle = Bundle()
bundle.putString("restaurant",Common.currentRestaurant!!.uid)
navController.navigate(R.id.nav_home,bundle)
}
} else if (p0.itemId == R.id.nav_cart) {
if (menuItemClick != p0.itemId) {
EventBus.getDefault().postSticky(MenuInflateEvent(true))
navController.popBackStack()
navController.navigate(R.id.nav_cart)
}
} else if (p0.itemId == R.id.nav_menu) {
if (menuItemClick != p0.itemId) {
EventBus.getDefault().postSticky(MenuInflateEvent(true))
navController.popBackStack()
navController.navigate(R.id.nav_menu)
}
} else if (p0.itemId == R.id.nav_view_order) {
if (menuItemClick != p0.itemId) {
EventBus.getDefault().postSticky(MenuInflateEvent(true))
navController.popBackStack()
navController.navigate(R.id.nav_view_order)
}
} else if (p0.itemId == R.id.nav_update_info) {
showUpdateDialog()
}
menuItemClick = p0.itemId
true
}

尝试执行此

private fun initView(root:View) {
swipeUpToRefresh = root.findViewById(R.id.refresh) as SwipeRefreshLayout
layoutAnimationController = AnimationUtils.loadLayoutAnimation(context, R.anim.layout_item_from_left)
viewPager = root.findViewById(R.id.viewpager) as LoopingViewPager

recyclerView = root.findViewById(R.id.recycler_popular) as RecyclerView
//Here is where you need to initialize an adapter to the recyclerView
recylerView!!.adapter = MyPopularCategoriesAdapter(requireContext(), listData) //I'm not sure what is the second argument of your adapter. Feel free to change it as you like.
recyclerView!!.setHasFixedSize(true)
recyclerView!!.layoutManager = LinearLayoutManager(context, RecyclerView.HORIZONTAL, false)
}

最新更新