大家好,这是我对堆栈溢出的第一个问题,希望我能正确解决。我正在尝试在一个片段中构建一个菜单,该片段使用回收站视图来显示卡片列表。我正在努力寻找一种方法来使每张卡导航到不同的片段。我曾尝试使用数据绑定,但是我发现它太难了,到目前为止,我看到的其他onClick示例不涉及任何导航。
我的回收站视图显示确定,并且我的卡片视图由约束布局内的imageView和TextView组成。
如果您有任何建议,请告诉我。谢谢!
菜单适配器类
class MenuAdapter(priv val menuDataList:List):RecyclerView.Adapter(){
class MenuViewHolder(itemView: View): RecyclerView.ViewHolder(itemView){
val menuImage: ImageView = itemView.menu_image
val menuText: TextView = itemView.menu_item_text
}
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): MenuAdapter.MenuViewHolder {
val itemView = LayoutInflater.from(parent.context).inflate(R.layout.menu_card, parent,false)
return MenuViewHolder(itemView)
}
override fun getItemCount(): Int {
return menuDataList.size
}
override fun onBindViewHolder(holder: MenuAdapter.MenuViewHolder, position: Int) {
val currentItem = menuDataList[position]
holder.menuImage.setImageResource(currentItem.imageResource)
holder.menuText.text = currentItem.description
}
}
菜单片段
class MenuFragment:Fragment(){
private lateinit var viewModel: MenuViewModel
private lateinit var recyclerView: RecyclerView
private lateinit var viewManager: RecyclerView.LayoutManager
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
val binding: MenuFragmentBinding = inflate(inflater,R.layout.menu_fragment, container, false)
viewManager = LinearLayoutManager(context)
recyclerView = binding.menuRecycleView.apply {
adapter = MenuAdapter(dataGenerate())
layoutManager = LinearLayoutManager(context)
setHasFixedSize(true)
}
return binding.root
}
私人有趣的dataGenerate():ArrayList {...返回数据}
DataModel
class MenuDataModel(val imageResource:Int,val description:String){
}
您可以添加一个名为String类型的名为“ type”的变量,每当您在列表中添加项目时,只需添加项目类型即可。然后在clicklistener上检查类型,然后将用户重定向到相应的屏幕。
class MenuDataModel(val imageResource: Int, val description: String,val type: String) {
}