フリープログラマー日記

iOS,アンドロイド開発を気ままにしながら生きてるおじさんのブログです。

第26回 氏名の入出力!

ちょっと苦戦します。スクロールビューのタッチイベントの扱いって難しいですね。

話は、少し前になりますが、Androidのスクロールビューは単一のレーアウトにまとめてのせるしか方法がなかったので、iOSとは同じ書き方ができませんでした。Androidの方にひとつ余分にクラスを作る必要があります。

この余分なレイアウトクラスに働きを持たせると整合性がなくなっていくので、このレイアウトにはあまり仕事をさせたくありません。

ということは、iOSではスクロールビューに置いたRunnerオブジェクト、Androidではレイアウトクラスに置いたRunnerオブジェクトにエントリしたよ〜みたいな挙動をさせるのが一番かなって思います。

ただ、オブジェクト本体はTeamクラスに所属しているメンバーで、ビューに乗っているのは、Runnerクラスから出てきたオブジェクトなので、元のオブジェクトのEntryフラグをいじる必要がある。???

とても複雑ですよね。どうやっても簡単には説明できない・・・

これはクロージャの出番になりそうです。う〜ん、頭が痛い。

昨日から、メンバー登録の部分を作っています。
関数だけ。

Swift版です。Team.swiftに置いてます。

    // 選手の追加・削除
    func addRunner(name: String) {
    
        // 新しいrunnerオブジェクトを作り、氏名を保存する
        lastId += 1
        saveLastId()
        let runner: Runner = Runner(number: lastId)
        runner.saveName(name: name)
        runners.append(runner)
        
    }
||< 

java版です。Team.javaに置いてます。
>|java|
   // 選手の追加・削除
    void addRunner(String name) {

        // 新しいrunnerオブジェクトを作り、氏名を保存する
        lastId++;
        saveLastId();
        final Runner runner = new Runner(lastId,myContext);
        runner.saveName(name);
        runners.add(runner);

    }

かなり、似たプログラムになっています。

途中、出てくるsaveLastIdという関数は、今ここまでのIDを使ってますよと記録しておき、次にリストを作るときは、ファイルからその番号までを読み込むことになります。

この関数をテストしてみました。

f:id:momonga117:20180526005039p:plain

スペーシングがいまいちですね〜。センスのなさが・・・悲しい。
名前をもう少し左に寄せて、右側にエントリーボタンを作ってみたいと思っています。