Próbowałem eksperymentować z tworzeniem aplikacji dla Androida w Scali.
Doszedłem do punktu, w którym mogę skompilować aplikację, ale nie ma funkcji pomocnika dla takich rzeczy jak:
button.setOnClickListener( () => {
text.setText("test")
})
(Mówię o zamknięciu)
Widzę wiele odniesień do scala-android.jar, i mam ten plik w moim projekcie, ale nie jestem pewien, co robi i jak go używać. Mam wrażenie, że ma te funkcje konwersji pomocnika, ale nie jestem pewien. Bieganie jar -tvf scala-android.jar
w pliku daje mi to:
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
Jeśli nie jest to coś, czego szukam, czy istnieje prosta biblioteka, która będzie dokonywać konwersji dla tego rodzaju rzeczy?
Odpowiedzi:
8 dla odpowiedzi № 1Możesz stworzyć własną, okazało się, że jest to bardzo łatwe i lekkie w Scali.
Oto moje, dla twojego odniesienia.
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 ()}
}
}
}
Zamieszaj to w swojej klasie aktywności i możesz to zrobić tak jak na przykład.