如何通过单击同一页面左侧的RecyclerView项目来更改或替换右侧的布局- androidKotlin

p8h8hvxi  于 2023-04-21  发布在  Kotlin
关注(0)|答案(2)|浏览(157)

我有一个布局,分为两个,左边的RecyclerView和右边的细节。我想当我点击左边的一个项目时,右边的布局会根据点击的项目进行替换。有人可以帮助我实现这一点,或者帮助更好的方法来实现这一点。谢谢

z9smfwbn

z9smfwbn1#

你可以尝试这个简单的解决方案,使用接口。
在适配器中创建一个接口,用于在项目中实现onClick。然后,在onBindViewHolder中调用它。例如:

class YourAdapter(val onclick: OnClickListener): RecyclerView.Adapter<RecyclerView.ViewHolder>() {

    interface OnClickListener {

        fun onClickItem(position: Int)
    }

    override fun onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int) {
        holder.itemView.setOnClickListener {
                onclick.onClickItem(position) // Here i will pass position for Ex, you can pass anything you want depend on 
                                              //  what's your declared in parameter of onClickItem function
            }
    }

在Activity中声明适配器并实现接口。

class YourActivity() : YourAdapter.OnClickListener() {

    lateinit var adapter: YourAdapter

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(binding.root)
        adapter = YourAdapter(this)
    }

    override fun onClickItem(position: Int) {
        // now you can set content to the view on the right, i've pass position item of recyclerView over here. 
        // content will change based on item you click on the left. 
        // Ex, i have a TextView on the right.
        myTextview.settext(position.toString())
    }
}
6rvt4ljy

6rvt4ljy2#

你的回答帮助了我。但是我在onBindViewHolder中所做的,我使用[position],如果position是say 1,那么我可以用新的片段替换片段:

holder.itemView.setOnClickListener {
            if (position == 1) {
            val activity = it.context as AppCompatActivity
                val menFragment = MenFragment()
                   activity.supportFragmentManager.beginTransaction()
                    .replace(R.id.frameLayout, menFragment)
                    .commit()
            }
        }

相关问题