Android 在GroupAdapter中设置OnClickListener on按钮
我正在尝试为GroupAdapter RecyclerView中的按钮设置OnClickListener 我的代码:Android 在GroupAdapter中设置OnClickListener on按钮,android,android-studio,kotlin,android-recyclerview,Android,Android Studio,Kotlin,Android Recyclerview,我正在尝试为GroupAdapter RecyclerView中的按钮设置OnClickListener 我的代码: class settings : Fragment() { override fun onCreateView( inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? ): View? { super.onC
class settings : Fragment() {
override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
super.onCreateView(inflater, container, savedInstanceState)
val view = inflater.inflate(R.layout.fragment_settings, container, false)
val adapter = GroupAdapter<ViewHolder>()
adapter.add(SettingTitle("Permissions"))
adapter.add(SettingCardCarInfo())
//FAILED METHOD #1
view.btn_update_settings.setOnClickListener {
Log.d("tahoma","")
Toast.makeText(activity, "Your settings were updated", Toast.LENGTH_SHORT).show()
}
//FAILED METHOD #2
adapter.setOnItemClickListener { v, settings_end ->
Log.d("tahoma",v.id.toString())
}
view.settingsRecycler.adapter = adapter
return view
}}
类设置:片段(){
覆盖创建视图(
充气机,
容器:视图组?,
savedInstanceState:捆绑?
):查看{
super.onCreateView(充气机、容器、savedInstanceState)
val视图=充气机。充气(R.layout.fragment\u设置,容器,错误)
val adapter=GroupAdapter()
adapter.add(设置标题(“权限”))
adapter.add(设置CardCarInfo())
//失败的方法#1
view.btn\u update\u settings.setOnClickListener{
Log.d(“tahoma”和“”)
Toast.makeText(活动,“您的设置已更新”,Toast.LENGTH\u SHORT.show())
}
//失败的方法#2
adapter.setOnItemClickListener{v,设置\u end->
Log.d(“tahoma”,v.id.toString())
}
view.settingsRecycler.adapter=适配器
返回视图
}}
类设置结束:项(){
重写getLayout():Int{
返回R.layout.settings\u结束
}
覆盖有趣的绑定(viewHolder:viewHolder,position:Int){}
我所尝试的: 1-只需在按钮上调用onclick侦听器,就会出现null调用错误 2-使用Adapter onclick listener确实捕获了点击,但忽略了对可点击项目的任何点击(因此对按钮没有好处) 3-执行与#1相同的操作,但通过“OnStart”方法-不起作用,因为“view”在该方法中不可调用 4-通过viewholder的OnBind方法调用onclick侦听器-它确实有效(我能够检测到按钮点击),但无法从同一适配器中的其他viewholder访问所需的数据,这些数据包含我需要访问的EditText
此时的任何帮助都是值得的,使用Kotlin syntex编写的解决方案将非常好使用
RecyclerView
您需要在适配器内部的视图上设置click listener,如下所示:
class GroupAdapter: RecyclerView.Adapter<ViewHolder>() {
var onItemClick: (<Type Of Item>) -> Unit = {}
fun createViewHolder(ViewGroup parent, int viewType): ViewHolder {
return ViewHolder(<InflateViewHere>).apply {
itemView.findViewById<Button>(R.id.button).setOnClickListener {
onItemClick(getItem(adapterPosition))
}
}
}
}
class-GroupAdapter:RecyclerView.Adapter(){
变量onItemClick:()->Unit={}
fun createViewHolder(视图组父级,int-viewType):ViewHolder{
返回ViewHolder()。应用{
itemView.findViewById(R.id.button).setOnClickListener{
onItemClick(获取项(适配器位置))
}
}
}
}
然后,在片段集中,单击按钮时单击,以进行处理
class GroupAdapter: RecyclerView.Adapter<ViewHolder>() {
var onItemClick: (<Type Of Item>) -> Unit = {}
fun createViewHolder(ViewGroup parent, int viewType): ViewHolder {
return ViewHolder(<InflateViewHere>).apply {
itemView.findViewById<Button>(R.id.button).setOnClickListener {
onItemClick(getItem(adapterPosition))
}
}
}
}