Android Clean代码:在复杂GridView中处理单击事件

Android Clean代码:在复杂GridView中处理单击事件,android,coding-style,Android,Coding Style,不确定这是否是解决这类问题的正确地点,但问题来了 我发现用Android编写干净的代码相对比较困难。我反复遇到的一个问题是GridView项目中的单击事件。假设我有一个复杂的布局(在自定义UI元素中),我为每个包含多个按钮的GridView项充气。单击按钮会产生多个事件,如数据库修改、对话框显示等 如果我要在这些UI元素中处理单击事件,则如下所示: Fragment -> GridViewAdapter -> MyGridViewItem -> OnClickButton1()

不确定这是否是解决这类问题的正确地点,但问题来了

我发现用Android编写干净的代码相对比较困难。我反复遇到的一个问题是GridView项目中的单击事件。假设我有一个复杂的布局(在自定义UI元素中),我为每个包含多个按钮的GridView项充气。单击按钮会产生多个事件,如数据库修改、对话框显示等

如果我要在这些UI元素中处理单击事件,则如下所示:

Fragment -> GridViewAdapter -> MyGridViewItem -> OnClickButton1() -> modifyDB()
我不想让MyGridViewItem知道任何DB修改之类的事情。或者换句话说:我不想在代码的深处处理这些事件,但我不知道如何处理它们

我应该使用接口,让我的适配器或创建该适配器的片段实现该接口吗?这被认为是干净的架构吗?我找不到使用适配器和复杂布局的干净体系结构教程


谢谢你的建议

您是否考虑过使用事件(例如,
EventBus
)?@R.Kirill hm,但问题仍然存在。我应该在哪里处理这个事件?假设每个项目代表一个对象(例如,一个人),我应该将这个人实例传递给事件侦听器吗?如果是这样的话,在适配器或片段中处理所有这些事件是否是一种更干净的方法?谢谢如果我必须在
适配器
片段
之间进行选择,我肯定会选择片段。但是它看起来还是不太好,因为
modifyDB()
是业务逻辑,应该与
视图
区分开来,后者是
片段
。您是否在项目中使用
MVP
?如果是这样的话,我认为演讲者的责任是处理点击事件,然后委托业务逻辑,并在必要时更新UIrequired@R.Kirill那么,监听片段内部的ClickEvent并将其传递给片段的控制器进行进一步处理(例如DB)?假设我也必须修改GridViewItem(例如图标状态),这将在触发事件之前直接在视图内部完成,不是吗?顺便说一句:你能推荐一个很好的MVP综合介绍吗?在这里,我们讨论了类似于上述的复杂场景?