2011-10-28 8 views
0

都市のリストで動作するAutoCompleteTextViewがあります。 リストが長いので、/ how/ifを格納したりキャッシュしたりする場所を考えています。TextViewデータソースはどこに格納しますか

私の最初の考えは、私のWebサービスからリストを取得することでしたが、それは1500 +行の長いリストです。

リクエストごとにウェブサービスから取得する必要がありますか?一度それを取得してキャッシュしますか?まずそれをstrings.xmlに保存して、リストを最新の状態に保ちますか? (とにかくあまり変わらない)。

私は一般的にAndroidとモバイルプログラミングの新機能です。どんなアイディアも大歓迎です。

答えて

1

頻繁に変更されないので(新しい引用を何回作成するのですか?)、文字列リソースとして保存することをお勧めします。

<string-array name="cities"> 
<item>One</> 
<item>Two</> 
<item>Three</> 
</string-array> 

あなたはリストを保持するのに適した場所がSharedSettingsである

getResources().getStringArray(R.array.cities); 
+0

ありがとう!このリストを作成する方法はありますか?AutoCompleteTextViewには2つの列があり、1つは表示され、もう1つはキーです。これにより、Webサービスに簡単に戻すことができます。 –

+0

'ListView'に表示されないデータを追加したい場合は' setTag() 'と' getTag() 'メソッドを使うことができますが、選択された項目を追跡することをお勧めします。 'ListView'で選択された行の' rowId'を使って文字列配列を返します。 –

1

変更しない場合は、strings.xmlに保存してください。変更が必要な場合は、変更して取得し、キャッシュし、更新してください。私はそれをSQLデータベースにキャッシュすることをお勧めします。次に、カーソルを使用することができますし、カーソルをうまく演奏するクラスがたくさんあります。

1

でいつでもリストを取得することができます。アプリケーションを初期化するときは、Webアプリケーションで新しいリストを確認し、必要に応じて更新します。次に、レスポンスをShareSettings Stringに保存します。 ここでは、リストが "|"で区切られている場合にこれを行う方法の例を示します。バー記号:

autocomplete_list = new ArrayList<String>(); 
     SharedPreferences settings = getSharedPreferences("application_preferences", MODE_WORLD_WRITEABLE); 
     String autocomplete_string = settings.getString("autocomplete_player_names", getResources().getString(R.string.add_players_default_autocomplete)); 
     String[] array = autocomplete_string.split("\\|"); 
     for (int i = 0; i < array.length; i++) { 
      String string = array[i]; 
      autocomplete_list.add(string); 
     } 

、あなたはそうのようなエディットテキストに適用することができます:返信用

final AutoCompleteTextView input = new AutoCompleteTextView(this); 
     String[] array = new String[autocomplete_list.size()]; 
     autocomplete_list.toArray(array); 
     ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_dropdown_item_1line, array); 
     input.setAdapter(adapter); 
関連する問題