2011-05-01 85 views
10

我已将OnCreate()上的所有UI事件绑定代码。它使我的OnCreate()巨大。处理UI事件的最佳做法

在android中实现UI事件是否存在模式?我可以在View xml文件中添加方法,然后我可以将所有的处理程序代码放在其他地方。

简而言之,我想我在问如何用android应用程序代码实现MVVM模式?

+0

如果你们认为MVVM模式,我问的是2不同的事情,那么让我知道我会更新我的问题。 – Gainster 2011-05-01 21:11:03

+0

+1;这更像是一个Java /事件驱动的编程问题。祝你好运! :) – 2011-05-01 21:11:18

+0

MVVM框架:http://code.google.com/p/android-binding/ – xandy 2012-04-27 09:22:08

回答

5

的东西,我做的:

  1. 将所有的onClick功能的XML。避免Java代码中的混乱。
  2. 将事件侦听器初始化为活动类的成员,而不是将它们保留在函数中。我的代码中不太喜欢花括号。混淆了我的地狱。
  3. 如果我的列表适配器变得太大,我将它们保存在一个单独的类中,而不是作为活动类的成员,然后将所有视图侦听器保留在适配器中。
  4. 为了避免产生过多的onClick功能有时我保留一个功能类似onNavigatonClick然后用view.getId(),看看哪个按钮被点击。由于未检查XML是否存在有效的函数调用,因此如果函数名称错误,则会导致运行时错误。
  5. 如果一个特定的视图需要大量的UI交互代码,我使用GestureDetector创建一个自定义视图来处理UI交互。

我想这仍然是非常基本的,因为我还没有太多的Java经验。

5

在1.6和更高版本中,您可以指定onClick方法in your layout XML file来修剪一些脂肪。我通常只是把它全部隐藏在一个initUi()方法中,我有我的onCreate方法调用。这样至少onCreate更容易阅读。

+0

你可以在下面的链接找到代码http://stackoverflow.com/questions/5848207/binding-events-on-在OnCreate – Gainster 2011-05-01 21:18:48

0

onCreate通常是调用setContentView并设置侦听器的最佳位置,但用于处理用户交互的代码通常在onClick,onTouch,onKey等例程中。

也许如果你发布你的代码,我们可以看到你做了什么?

1

很多很好的答案已经。 :)

如果您使用的是Android 1.6或更高版本,则可能会发现新的fragments API有助于将您的活动组织和分区为多个逻辑单元。