2010-06-06 6 views
3

J'ai essayé d'expérimenter le développement d'applications Android avec Scala.Ce qui est dans scala-android.jar?

Je suis arrivé au point où je peux obtenir l'application de compiler, mais il n'y a pas de fonctions d'aide pour des choses comme:

button.setOnClickListener(() => { 
    text.setText("test") 
}) 

(je parle de la fermeture il y a)

Je vois beaucoup de références à scala-android.jar, et ai ce fichier dans mon projet, mais je ne suis pas sûr de ce qu'il fait, ou comment l'utiliser. J'ai l'impression qu'il a ces fonctions de conversion d'aide, mais je ne suis pas sûr. Exécution jar -tvf scala-android.jar sur le fichier me donne ceci:

401 Sun Jun 06 10:06:02 MDT 2010 scala/Function0$class.class 
431 Sun Jun 06 10:06:02 MDT 2010 scala/Function0.class 
572 Sun Jun 06 10:06:02 MDT 2010 scala/Function1.class 
282 Sun Jun 06 10:06:02 MDT 2010 scala/ScalaObject$class.class 
271 Sun Jun 06 10:06:02 MDT 2010 scala/ScalaObject.class 
458 Sun Jun 06 10:06:02 MDT 2010 scala/runtime/BoxedUnit.class 

Si ce n'est pas ce que je suis à la recherche, est-il une simple bibliothèque qui va faire des conversions pour ce genre de choses?

Répondre

8

Vous pouvez créer le vôtre, j'ai trouvé cela très facile et léger dans Scala.

Voici le mien, juste pour votre référence. Mélangez ceci dans votre classe d'activité, et vous pourriez le faire exactement comme votre exemple.

trait FindView 
{ 
    this: Activity => 

    def findView [WidgetType] (id: Int) : WidgetType = { 
     return findViewById (id).asInstanceOf[WidgetType] 
    } 

    implicit def listenerFromFunction (action:() => Any) = { 
     new View.OnClickListener() { 
      def onClick(v: View) {action()} 
     } 
    } 
} 

+0

Nice à voir quelques connaissances d'Android et Scala ensemble ici. –

+0

+1 explication impressionnante. Merci!! –