【发布时间】:2019-09-28 20:06:50
【问题描述】:
我正在尝试为 GroupAdapter RecyclerView 内的按钮设置 OnClickListener
我的代码:
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
}}
class SettingEnd : Item<ViewHolder>() {
override fun getLayout(): Int {
return R.layout.settings_end
}
override fun bind(viewHolder: ViewHolder, position: Int) {}
我试过的:
1 - 只需在按钮上调用 onclick 侦听器,就会出现空调用错误
2 - 使用 Adapter onclick 侦听器确实捕获了点击,但忽略了对可点击项目的任何点击(因此对按钮没有好处)
3 - 与 #1 相同,但通过“OnStart”方法 - 不起作用,因为在该方法中无法调用“view”
4 - 通过查看器的 OnBind 方法调用 onclick 侦听器 - 它确实有效(我能够检测到按钮点击),但无法从同一适配器中的其他查看器访问所需的数据,其中包含我的编辑文本需要去。
在这一点上的任何帮助都会得到帮助,用 Kotlin syntex 编写的解决方案会很棒
【问题讨论】:
标签: android android-studio kotlin android-recyclerview