如何使RecyclerView中的每个项目导航到Kotlin中的另一个片段?

问题描述 投票:0回答:1

大家好,这是我对堆栈溢出的第一个问题,希望我能正确解决。我正在尝试在一个片段中构建一个菜单,该片段使用回收站视图来显示卡片列表。我正在努力寻找一种方法来使每张卡导航到不同的片段。我曾尝试使用数据绑定,但是我发现它太难了,到目前为止,我看到的其他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){

}

android android-fragments kotlin android-recyclerview onclicklistener
1个回答
0
投票

您可以添加一个名为String类型的名为“ type”的变量,每当您在列表中添加项目时,只需添加项目类型即可。然后在clicklistener上检查类型,然后将用户重定向到相应的屏幕。

class MenuDataModel(val imageResource: Int, val description: String,val type: String) {

}
© www.soinside.com 2019 - 2024. All rights reserved.