前回までの状況はこちら。
簡単ですが、UIは作ったので、実際に移動距離から都市名を表示させる処理を作っていきます。
class StartEnd(startCity: String, endCity: String) {
val startCityName : String = startCity
val endCityName : String = endCity
}
class AroundHokkaido {
fun getCity() : StartEnd {
var tempDistance = 0.0
var start : String = ""
var end : String = ""
var loop : Boolean = false
run {
citylist.cityList.forEach{
if(loop){
end = it.city
return@run
}else{
tempDistance += it.distance
if(totalDistance < tempDistance){
start = it.city
loop = true
}
}
}
}
return StartEnd(start, end)
}
Jsonで作成した都市と距離のデータから、移動距離と都市間距離を比較しながら加算していき、都市間距離合計が移動距離を超えたときにそのときの都市を返します。
forEach()を使っているのですが、forEachは処理じゃなくて関数なので、途中で処理を抜けるには、breakではなくreturnになります。
それをrunというラベルを指定してreturnすることで、run{}を抜けるところまでジャンプできます。
ややこしい。
でも大分Kotlinにも慣れてきた気がする。
class MainActivity : AppCompatActivity() {
private fun updateCitydistance(startEnd : StartEnd){
startCity.text = startEnd.startCityName
endCity.text = startEnd.endCityName
}
kotlinはUIにアクセスするの楽だからいいね。
GPSって、思った以上にいい加減、というか、誤差が大きくて、動かしていなくても、1mぐらい移動したものと見なされるみたいです。
後々対処しないとだけど、今は、移動するのがめんどくさいので、このままにしておきます。
確認用に、Jsonを修正。
うん、きちんと変わりましたね。
修正しなきゃいけないところはあるけど、とりあえずはこれでいいか。
「【ANDROID】【実質北海道一周】移動距離に応じて表示を変える」への1件のフィードバック