【问题标题】:Saving the options added on top of existing spinner保存在现有微调器之上添加的选项
【发布时间】:2018-01-10 21:26:29
【问题描述】:

我正在尝试允许用户向现有微调器添加更多选项。 微调器显示我创建的现有数组列表中的选项。用户可以向微调器添加选项,但前提是应用程序正在运行。当它重新打开时,添加的选项不存在,我知道为什么。 我只需要知道如何在不使用数据库的情况下保存这些选项。我确实找到了共享的 Preference 方法,但它们太复杂了。 您的帮助将不胜感激。

这是数组的一部分,它添加到微调器中。

final List<String> spinnerArray =  new ArrayList<String>();
    spinnerArray.add("Grocery");
    spinnerArray.add("Transportation");
    spinnerArray.add("Rent");
    spinnerArray.add("Electricity Bill");

  final  ArrayAdapter<String> adapter = new ArrayAdapter<String>(
            this, android.R.layout.simple_spinner_item, spinnerArray);

    adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    Spinner sItems = (Spinner) findViewById(R.id.spinner);
    sItems.setAdapter(adapter);

这是向微调器添加新选项的部分。

 EditText cat = (EditText)findViewById(R.id.editText10);
 String cate = cat.getText().toString();
 adapter.insert(cate, 0);

【问题讨论】:

    标签: android arrays spinner


    【解决方案1】:

    最好的方法是保存在 SharedPreference 中,因为数据库将是更多样板代码。或者您可以执行文件操作。但是存储在共享偏好中非常容易。您可以使用以下方法来做到这一点。

    将数组保存到 SP

    public boolean saveArray(List<String> array, String arrayName, Context mContext) {   
        SharedPreferences prefs = mContext.getSharedPreferences("preferencename", 0);  
        SharedPreferences.Editor editor = prefs.edit();  
        editor.putInt(arrayName +"_size", array.size());  
        for(int i=0;i<array.size();i++)  
            editor.putString(arrayName + "_" + i, array.get(i));  
        return editor.commit();  
    } 
    

    从 SP 加载数组

    public List<String> loadArray(String arrayName, Context mContext) {  
        SharedPreferences prefs = mContext.getSharedPreferences("preferencename", 0);  
        int size = prefs.getInt(arrayName + "_size", 0);  
        List<String> array = new ArrayList<String> ();  
        for(int i=0;i<size;i++)  
            array.add(prefs.getString(arrayName + "_" + i, null));  
        return array;  
    }
    

    现在要在您的代码中使用您所要做的就是 -

    saveArray(spinnerArray,"SpinnerArrayData",getApplicationContext());
    

    得到 -

    spinnerArray = loadArray(SpinnerArrayData",getApplicationContext())
    

    【讨论】:

    • 在使用微调器之前保存数组然后立即加载它时出现标识符预期错误。另外,当我稍微改变一下时,我得到了 String[] 到 List 类型转换的错误,反之亦然。
    • 修改为字符串列表
    • 我自己就是这样做的,但也没有用,没有错误,但没有保存值。知道我应该在哪里将数组保存到 SP 吗?我在用户添加任何新选项并在微调器上使用它之前加载它之后保存它。
    • 当你做 EditText cat = (EditText)findViewById(R.id.editText10);字符串 cate = cat.getText().toString();适配器.插入(凯特,0);您只需将项目添加到适配器。您还应该添加到列表中。所以在这之后做 spinnerArray.add(cate);然后保存到 pref
    • 哦..我的错。感谢您的帮助!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-13
    • 1970-01-01
    • 1970-01-01
    • 2014-01-10
    • 1970-01-01
    • 2015-12-24
    相关资源
    最近更新 更多