Scala勉強会in渋谷のページにてくじびきアプリを誰か作れ!というのを発見したので作ってみた。
http://atnd.org/events/9889#comment
Andoroidじゃなくてスクリプト版はid:xuweiさんが作ってくれていたので、大分助かった。
http://d.hatena.ne.jp/xuwei/20101112/1289572517
作ったのはこんなやつ
ソースは以下。
なんか色々と汚い・・
package scala.example.helloimport android._
import app.Activity
import os.Bundle
import widget._
import view.View
import view.View.OnClickListenerimport org.xmlpull.v1.{XmlPullParser, XmlPullParserFactory}
import XmlPullParser._import java.io.StringReader
import scala.collection.mutable.ArrayBuffer
import scala.util.Randomclass HelloActivity extends Activity {
var arr = Array[String]()
override def onCreate(savedInstanceState: Bundle) {
val me = this
super.onCreate(savedInstanceState)
setContentView(R.layout.main)
val EditText01 = findViewById(R.id.EditText01).asInstanceOf[EditText]
EditText01.setText("http://api.atnd.org/events/users/?event_id=10100")val items = (0 to 10).map(n => n.toString).toArray
val spinner01 = findViewById(R.id.Spinner01).asInstanceOf[Spinner]
val spinner02 = findViewById(R.id.Spinner02).asInstanceOf[Spinner]
spinner01.setAdapter(new ArrayAdapter[String](me, R.layout.spinnerlist, items))
spinner02.setAdapter(new ArrayAdapter[String](me, R.layout.spinnerlist, items))
spinner01.setSelection(5)
spinner02.setSelection(5)
findViewById(R.id.Button01).asInstanceOf[Button].setOnClickListener(
new OnClickListener {def onClick(v: View) {
val url: String = EditText01.getText.toString
val str = scala.io.Source.fromURL(url).getLines.mkString
val buffer = new ArrayBuffer[String]
val parser = XmlPullParserFactory.newInstance.newPullParser
parser.setInput(new StringReader(str))
var eventType = parser.getEventType
while (eventType != END_DOCUMENT) {
eventType = parser.next()
if (eventType == START_TAG &&
parser.getName.equals("nickname")) {
buffer + parser.nextText
}
}
arr = buffer.toArray
me.findViewById(R.id.ListView01).asInstanceOf[ListView]
.setAdapter(new ArrayAdapter[String](me, R.layout.list, arr))
}})
findViewById(R.id.Button02).asInstanceOf[Button].setOnClickListener(
new OnClickListener {def onClick(v: View) {
val num1 = spinner01.getSelectedItem.toString.toInt
val num2 = spinner02.getSelectedItem.toString.toInt
val list1 = (arr.filter(s => s != "kaigaiengineer")) take num1 toList
val list2 = Random.shuffle(arr.filter(s => s != "kaigaiengineer")
.drop(num1).toList) take num2
arr = (list1 ::: list2).toArray
me.findViewById(R.id.ListView01).asInstanceOf[ListView]
.setAdapter(new ArrayAdapter[String](me, R.layout.list, arr))
}})
}
}
main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="#A0F0FF">
<TableLayout android:id="@+id/TableLayout01"
android:layout_width="fill_parent"
android:layout_height="wrap_content">
<TableRow android:id="@+id/TableRow01"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:minHeight="40sp">
<TextView android:id="@+id/TextView01"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/TextView01"
android:textSize="20sp"
android:textColor="#000000"/>
<Spinner android:id="@+id/Spinner01"
android:layout_width="wrap_content"
android:layout_height="fill_parent"/>
</TableRow>
<TableRow android:id="@+id/TableRow02"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:minHeight="40sp">
<TextView android:id="@+id/TextView02"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/TextView02"
android:textSize="20sp"
android:textColor="#000000"/>
<Spinner android:id="@+id/Spinner02"
android:layout_width="wrap_content"
android:layout_height="fill_parent"/>
</TableRow>
</TableLayout>
<EditText android:id="@+id/EditText01"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="wrap_content">
<Button android:id="@+id/Button01"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/Button01"
/>
<Button android:id="@+id/Button02"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/Button02"
/>
</LinearLayout>
<ListView
android:id="@+id/ListView01"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
/>
</LinearLayout>
string.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">shuffle</string>
<string name="TextView01">席数(確定)</string>
<string name="TextView02">席数(抽選)</string>
<string name="Button01">参加者を取得</string>
<string name="Button02">抽選</string>
</resources>