0

次のような構造で、拡張可能なリストビューをメインのユーザー インターフェイスとして使用するアプリを構築しています。

次のように、要素がこの構造に一致する XML を作成します。

<type type = "A la Carte>
  <option option = "Rolls">
   <item>
     <name> Salmon</name>
     <price> 2.95 </price> 
   </item>
  </option>
</type

(xml エラーには注意しないでください。メモリから入力しましたが、XML は機能します)。

私は SAXParser を使用して XML を解析しています。問題は、データをどの構造に解析する必要があるかということです。

メニュー リストは大きくない (カテゴリ全体で合計 100 要素) ため、次のようにネストされた配列リストのセットを作成すると考えました。

arraylist(types) contains (arraylist(options) contains (arraylist items) contains array(name, price) を含みます。

この構造は、ListView に対してデータを呼び出す順序を再現しています。また、確認シートでのデータの表示方法とも一致します。これは、注文を満たすサーバーに渡す SQLite の構造と一致します。

私の質問は、このサイズのリストとこの量のネスティングでは、アプリのパフォーマンスが大幅に低下するのでしょうか? 特に、これはバッテリーの寿命を延ばしますか?

あなたの考えをとても楽しみにしています!

注: 覚えておくべきことは、この構造を他のサービスに再利用したいということです。たとえば、私のカフェテリアにバーベキュー スペシャルがあるとします。同様の構造の XML ファイルを挿入し (ただし、バーベキューをテーマにしたものであるためテキストは異なります)、それを読み取るためにコードを最小限に変更できるようにしたいと考えています。

4

1 に答える 1

0

ネストされた 4 つの ArrayList が表示されます。これにより、パフォーマンスが確実に低下し始めます。また、これらすべての配列インデックスを見つけるために余分なバッテリ寿命が必要になります。(名前、価格) にはBasicNameValuePair、アイテム、オプション、およびタイプにはLinkedListなど、他のデータ型の使用を検討してください。これはより速く実行されます。プログラムをよりよく整理するために、おそらく BasicNameValuePair (name,price) を保持する単純な Item クラスを作成します。

順序が重要でない場合は、LinkedList の代わりに HashMap を使用します。要素を名前で配置してアクセスする方がはるかに高速です。

それらが常にアルファベット順である場合は、非常に高速で自動的にすべてをアルファベット順に配置する TreeMap を使用します。

于 2012-07-26T16:17:06.360 に答える