0

私は現在、フェリーのスケジュールを表示するAndroidアプリケーションを持っています。アプリケーションは完全なスケジュール(巨大なリストのみ)を表示できますが、アプリケーションのセールスポイントは、次の2つのフェリーが出発する時刻と、現在の出発時刻からの時間の長さを表示することです。

私はJavaに比較的慣れておらず、現在、コードで大きなSwitch()ステートメントを使用しています。基本的に、現在の電話時刻を取得し、それをスケジュール内のすべての時刻と比較します。その時点で、次の2つの出発時刻が表示され、現在の時刻と出発時刻の差が計算されます。

switchステートメントは、速度の目的だけでなく、コードの変更の目的にも最適ではないと確信しています。たとえば、一度変更すると、その1回の変更を修正するために、一連のコード行が変更されます。また、スケジュール全体が変更された場合、時間の変更を有効にするには、全員がアプリを更新する必要があります。私の理想的な状況は、時間の変更があった場合に新しいスケジュールをロードするファイルをダウンロードしてハッシュマップに挿入できるファイルをWebサーバーのどこかに保存することです(これは正しい用語だと思います)。

これがどれほど混乱しているのかはわかりませんが、誰かが私がハッシュマップを使用する方法や、このタスクを実行するために推奨する他の何かを説明していただければ幸いです。現在、変数は2つのフェリーターミナルと、1日ごとにスケジュールが変更されるため、曜日(月曜日、火曜日-金曜日、土曜日、日曜日)です。

以下はアプリケーションのスクリーンショットですので、私の投稿が明確でなかった場合でも理解できます。前もって感謝します。

スクリーンショット:

スクリーンショット

4

2 に答える 2

1

スケジュールオブジェクトを並べ替えられた配列に格納します。次に、現在の時刻より大きい最初の値を配列でバイナリ検索できます。おそらく、場所と該当する曜日で構成される親配列を使用するでしょう。

この種のデータ構造は、コードにコンパイルする代わりに、アプリケーションによって読み取られて更新のために解析されるファイルに簡単に書き込むことができます。

これの詳細?まず、Androidのリソースを理解します。更新されたスケジュールが存在しない場合は、デフォルトのリソースにフォールバックします。

次に、HTTPヘッドリクエストを使用して、新しいファイルが存在するかどうかを確認します。含まれている場合は、状態を解析、ダウンロード、保存します。インスタンス状態の保存を使用してAndroidアクティビティの状態を保存します

最後に、XMLは、高速でなくてもデータ配布に便利です。誰もがそれを理解しており、更新や引き渡しは簡単です。

<ferry location=0 time=2045>
    <day>1</day>
    <day>2</day>
    <day>3</day>
    <day>4</day>
    <day>5</day>
</ferry>

<ferry location=0 time=0800>
    <day>6</day>
</ferry>
于 2011-10-11T17:40:45.477 に答える
0

スケジュールデータを保持するには、データベースのようなものが必要になります。これは、データからコードを分離するのに役立ちます。私はAndroidに精通していませんが、デバイス上にsqliteデータベースへのインターフェイスがあると思います。

さらに、これは小さなデバイス上のアプリケーションであるため、インターネット接続を介してサーバー上のスケジュールデータベースに接続できます。そうすれば、スケジュールデータを(サーバー上の)1つの場所でのみ維持する必要があり、クライアントは常に最新のデータを使用します。

于 2011-10-11T17:45:43.537 に答える