我有一個AutoCompleteTextView,它與城市列表一起工作。 該列表很長,所以我在考慮在何處/如何/如何存儲和/或緩存它。我應該在哪裏存儲一個TextView數據源
我最初的想法是從我的Web服務獲取列表,但它是一個包含1500多行的長列表。
我應該從每個請求的Web服務中獲取它嗎?獲取一次並緩存它?將它存儲在strings.xml中,以確保最新的列表? (反正它並沒有太大變化)。
我是一般的Android和移動編程新手。任何想法都歡迎。
我有一個AutoCompleteTextView,它與城市列表一起工作。 該列表很長,所以我在考慮在何處/如何/如何存儲和/或緩存它。我應該在哪裏存儲一個TextView數據源
我最初的想法是從我的Web服務獲取列表,但它是一個包含1500多行的長列表。
我應該從每個請求的Web服務中獲取它嗎?獲取一次並緩存它?將它存儲在strings.xml中,以確保最新的列表? (反正它並沒有太大變化)。
我是一般的Android和移動編程新手。任何想法都歡迎。
由於它們不會經常更改(創建新引用的次數是多少次?)建議您將它們存儲爲字符串資源。
<string-array name="cities">
<item>One</>
<item>Two</>
<item>Three</>
</string-array>
您可以
getResources().getStringArray(R.array.cities);
如果它不會更改,請將其存儲在strings.xml中。如果它將發生變化,獲取它,緩存它,並在需要時進行更新。我會建議緩存在SQL數據庫中。然後你可以使用遊標,並且有一大堆類似遊標的遊戲。
的好地方隨時檢索列表保持列表是SharedSettings。應用程序初始化時,請與Web應用程序一起檢查新列表,並根據需要進行更新。然後保存對ShareSettings字符串的響應。 這裏是如何做到這一點,如果你的名單是由「|」分隔的例子酒吧符號:
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);
感謝您的答覆!有什麼辦法讓這個列表和AutoCompleteTextView有兩列,一個是可見的,一個是關鍵的?這將使其更容易地提交給Web服務。 –
如果你想添加額外的數據到不會顯示的'ListView',你可以使用'setTag()'和'getTag()'方法,但我建議你跟蹤選定的項目,字符串數組,使用ListView中選定行的'rowId' –