【ANDROID】【実質北海道一周】移動距離に応じて表示を変える

前回までの状況はこちら。

簡単ですが、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件のフィードバック

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください