我正在尝试创建一个简单的待办事项列表应用程序,它可能只存储一些东西。
在ListView中添加项目并关闭应用程序后,加载的唯一条目是输入的最后一个条目。如何在关闭应用程序后显示所有输入的条目?
代码:
public class MainActivity extends ActionBarActivity {
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");
adapter.add(dataSet);
adapter.notifyDataSetChanged();
}}
提前致谢。
答案 0 :(得分:0)
您必须为要添加到SharedPreferences
的每个项目保持不同的密钥,否则您优先添加的最后一项将覆盖最后一项。
答案 1 :(得分:0)
我不建议使用SharedPreferences
制作类似待办事项列表的应用。
创建一个SQLite
数据库并存储您的待办事项。或者您可以将待办事项保存在JSON
文件中,这也很容易实现。
在这种情况下,使用SharedPreferences
无效,因为您需要跟踪所有待办事项首选项的键,这会产生另一个开销。
查看Lars Vogel关于创建内容提供者和SQLite数据库的这篇文章: