我有一个AutoCompleteTextView,它可以处理城市列表。 列表很长,所以我在考虑在何处/如何/如何存储和/或缓存它。
我最初的想法是从我的网络服务获取列表,但这是一个包含1500多行的长列表。
我应该在每次请求时从Web服务获取吗?得到它一次并缓存它?将它存储在strings.xml中以开始使用并确保使列表保持最新状态? (无论如何都没有太大变化)。
我是Android和移动节目的新手。欢迎任何想法。
答案 0 :(得分:1)
如果它不会改变,请将其存储在strings.xml中。如果它会改变,获取它,缓存它,并在需要时更新。我建议在sql数据库中缓存它。然后你可以使用游标,并且有一大堆类可以很好地使用游标。
答案 1 :(得分:1)
因为它们不会经常更改(创建新引用次数多少次?)建议您将它们存储为字符串资源。
<string-array name="cities">
<item>One</>
<item>Two</>
<item>Three</>
</string-array>
您可以随时
检索列表getResources().getStringArray(R.array.cities);
答案 2 :(得分:1)
保留列表的好地方是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);