【问题标题】:How to save dynamically added items in Listview with sharedpreferences?如何使用 sharedpreferences 在 Listview 中保存动态添加的项目?
【发布时间】:2014-05-23 13:46:51
【问题描述】:
        protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    preferences = getSharedPreferences(FAVORI, 0);

    ListView favlist = (ListView) findViewById(R.id.favoriliste);

    ArrayList<String> foo = new ArrayList<String>();
    String [] bar = foo.toArray(new String[0]);

    public void favekle(String string) {

    foo.add(string);
    bar = foo.toArray(new String[0]);

    favadapter = new MyFavAdapter(Diziler.this,
            android.R.layout.simple_list_item_1, R.id.txtTitle, bar);
    // favlist= new ArrayList<>();
    favlist.setAdapter(favadapter);
    favadapter.notifyDataSetChanged();

}       
    favadapter = new MyFavAdapter(Diziler.this,
            android.R.layout.simple_list_item_1, R.id.txtTitle, bar);
    // favlist= new ArrayList<>();
    favlist.setAdapter(favadapter);
    favadapter.notifyDataSetChanged();

您好。我需要帮助。我想使用 SharedPreferences 在 Listview 中保存动态添加的项目。 我正在使用公共 void favekle 函数添加列表视图项目。我将项目添加到 ArrayList,而不是将 ArrayList 转换为字符串数组,最后我将项目设置为适配器。 如果我重新启动应用程序,我的 listview 项目就会消失。 如何使用 sharedpreferences 保存添加的项目?我使用了 StringBuilder 但它不起作用。谢谢。

【问题讨论】:

    标签: android sharedpreferences


    【解决方案1】:

    您可以通过这种方式保存到共享首选项

    SharedPreferences sp = context.getSharedPreferences(
                "file name", 0);
        SharedPreferences.Editor spEdit = sp.edit();
        spEdit.putLong(key, value);
        spEdit.commit();
    

    【讨论】:

    • 我需要保存列表视图项。不需要保存原始类型。
    • 您的 ListView 项目由什么组成?
    【解决方案2】:

    您应该使用 SharedPreferences 存储单个键值对数据。尝试存储大的分组数据根本没有效率。您应该使用 SQLite 数据库。

    SQLite and ContentProvider Tutorial

    【讨论】:

      【解决方案3】:

      您可以将字符串集存储在共享首选项中,然后在检索它们时将它们转换回列表。

      ArrayList<String> list = new ArrayList<String>();
      list.add("test1");
      list.add("test2");
      
      PreferenceManager.getDefaultSharedPreferences(context)
          .edit()
          .putStringSet("stringset", new HashSet<String>(list))
          .commit();
      

      【讨论】:

        猜你喜欢
        • 2019-05-29
        • 1970-01-01
        • 2016-06-09
        • 2019-11-14
        • 1970-01-01
        • 1970-01-01
        • 2016-05-13
        • 1970-01-01
        • 2012-08-27
        相关资源
        最近更新 更多