我应该在哪里存储TextView数据源

时间:2011-10-28 20:56:34

标签: android

我有一个AutoCompleteTextView,它可以处理城市列表。 列表很长,所以我在考虑在何处/如何/如何存储和/或缓存它。

我最初的想法是从我的网络服务获取列表,但这是一个包含1500多行的长列表。

我应该在每次请求时从Web服务获取吗?得到它一次并缓存它?将它存储在strings.xml中以开始使用并确保使列表保持最新状态? (无论如何都没有太大变化)。

我是Android和移动节目的新手。欢迎任何想法。

3 个答案:

答案 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);