Xamarin @ 勝手に自習編

MOPosted by

Xamarin GUI開発 with C#
6,000円の参考書を買う勇気を僕にください

引き続きのiOS版GUI開発の話。
つかね、ここまでiOSの機能をexportして使ってるんなら、

もうXamarinForm使ってる意味無いんじゃ…

とか思い始めてるんですが、きっと気の所為に違いない
((((;゚Д゚))))ガクガクブルブル

さてこの2週間は、リリース後の改修作業等々あり、新規の機能追加はあまりできなかったのですが、
以下2点を主に推し進めました。

a) 履歴表示機能を試験的に実装
b) バージョンチェック機能と、新規お知らせチェック機能のモジュール化推進
c) チャットバルーンの位置調整(アイコン表示シタイトカナントカ)

履歴表示機能
仕事で、携帯端末(主にiOS)向けチャットのスゴイ版のGUIを作っているのですが、サーバ側に蓄えられているチャット履歴を1日分くらい遡れるようにする予定があり、ブランチ切って試験的に実装してみました。

普段のチャット表示であれば…
1つづつ (←コレ重要)
発話は右側よせ、受話は左よせ
吹き出しを作って→表示 という処理をのんびり繰り返す、至って平和な世界w

一方、履歴の表示については、
サーバに履歴を問い合わせると、デフォルト1日分の送受記録が全部返って(以下、resBody)きます。
コレをどう料理するかが、オモシロイところで。

1作目 「表示できるのか」ってところに的を絞れっ
まずはサーバへの問い合わせ方というところ。問い合わせ方法やら、その要件やら、返ってくるJSONは何順なのかやら、構造を確認したりやら、ヤッタリトッタリのテストやらしたりしてみてからの(コレェ、JSONの構造解析自分ですんのマジ面倒だなーとか思ってたら、もうすでに雛形があったアリガタヤ♪)
取得したresBody(JSON形式、要素は延べ500個位)の構造を解析して、ListChild.Addしていく。実はチャットでやり取りするのはテキストだけではなく、ボタンやらレイアウトやら、ナンヤラカンヤラがイロイロ入れ子になってたりして、ここの解析処理で結構な時間が消費されてしまっていることがわかりましたが、とりあえず今回は「表示できるのか」を主眼にしておりますので…スルー
作ったListを ContentPageに食わせて表示します。

で、表示はできたんですけどっ やっぱ遅いですよねっ
特に初回表示のJSON分析で時間かかりすぎ(30秒位ダンマリとかっ しかもクルクル出ないしっ)

解析処理が済んじゃえばアトはできたアイテムを転記するだけなんで、サクサクなんですが…。
ん~残念ながらイマイチ。
けど、履歴は表示できたお♪

2作目 とりあえず10個づつ表示すれば? && プルダウンをトリガーにして履歴表示してくれっ
オホフゥ、プルダウンとか…デッキルッカナデッキルッカナ♪ ←歳が(ry
てことでGoogle先生に聞いてみたら、ContentPageにプルダウンイベント持たせることが意外に簡単にできるらしいことがわかり一安心。安心して終わるわけにはいかないので、早速実装実装w

というわけで、1作目の手法をちょっと変えて、10個ずつ解析~表示ということを、プルダウントリガーで行えるように変更。

ListViewPageならば、プルダウンによるリフレッシュ用の属性と機能が実装されてて、プルダウンしたらクルクル(通称)が出てきたりもするんだけど、ContentPageのは自分で実装しないといけない模様。

バージョンチェック機能と、新規お知らせチェック機能のモジュール化推進

すでに実装済みの起動時の処理について、現状もろにメイン画面クラスで処理を書いてました。
「メイン画面でアラートを表示したいのだから、メイン画面クラスににアラート表示処理を書いた」というのが本音なのですが、他クラスのために、メインにアラート処理を書くの?という思いがいつもあり。
「できるだけ他の部分に迷惑をかけないで、そっと機能を追加する」という自分のコーディングポリシーに反するので、書き換えてみることにし、結果、他クラス側にメインのの参照を渡すことで、他クラスでの処理中にアラートを出すことができるようにしました。

こういうの、上手な人はどうやってるんでしょうかね。
必殺のデリゲートで担当クラスにまかせる的な。
あー、なんか今考えてたら一括で、できそうな気がしてきたぞw

Leave a Reply

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

CAPTCHA