使用SharedPreferences从ListView保存数据

时间:2013-01-05 19:09:20

标签: android listview sharedpreferences

我试着寻找答案但找不到我要找的东西: 这是我第一次尝试保存数据/使用SharedPreferences所以我不确定我在做什么。 主要观点是,在用户在EditText中输入内容后,它会填充ListView。但我也想要它,以便在执行此操作时,应用程序还会保存字符串,以便我可以使用LoadPreferences在用户重新进入应用程序时使用它。但这不会发生

代码:

public class TaskPage extends SherlockActivity {

EditText display;
ListView lv;
ArrayAdapter<String> adapter;
Button addButton;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    display = (EditText) findViewById(R.id.editText1);
    lv = (ListView) findViewById(R.id.listView1);
    addButton = (Button) findViewById(R.id.button1);


    adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1);
    lv.setAdapter(adapter);
    LoadPreferences();


    addButton.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            String task = display.getText().toString();


                adapter.add(task);
                adapter.notifyDataSetChanged();
                SavePreferences("LISTS", task);
        }
    });
}

protected void SavePreferences(String key, String value) {
    // TODO Auto-generated method stub
    SharedPreferences data = PreferenceManager.getDefaultSharedPreferences(this);
    SharedPreferences.Editor editor = data.edit();
    editor.putString(key, value);
    editor.commit();


}

protected void LoadPreferences(){
    SharedPreferences data = PreferenceManager.getDefaultSharedPreferences(this);
    String dataSet = data.getString("LISTS", "None Available");

}

我很确定我做错了但没有错误。所以当我运行应用程序时,一切正常,除了没有保存(或者它可能只是没有在ListView中显示)

那我怎么解决这个问题呢? 谢谢!

1 个答案:

答案 0 :(得分:3)

将LoadPreferences()方法更改为:

protected void LoadPreferences(){
    SharedPreferences data = PreferenceManager.getDefaultSharedPreferences(this);
    String dataSet = data.getString("LISTS", "None Available");

     adapter.add(dataSet);
     adapter.notifyDataSetChanged();
}

在您当前的代码中,您没有将dataSet添加到ArrayAdapter