我已经创建了一个动态的ListView,但我的ListView中的数据会在每次启动时被删除吗?你能写一些示例应用程序吗?
我早先在第一个启动记录程序中打开了数据带来的方式吗? 我知道我需要使用SharedPreferences,但我如何使用,我的实验失败了。
private SharedPreferences ayarla;
private String AYAR_ADI="ayarlist";
private SharedPreferences.Editor editor;
private ArrayList<String> dersler = new ArrayList<String>();
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
adapter = new ArrayAdapter<String>(this,R.layout.customlistview,dersler);
ayarla = getApplicationContext().getSharedPreferences(AYAR_ADI, Context.MODE_PRIVATE);
Button btnDersEkle = (Button)findViewById(R.id.btnDersEkle);
btnDersEkle.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
if(dersler.size()<12) {
lV.clearTextFilter();
adapter.notifyDataSetChanged();
alert.setView(et());
alert.show();
}
}
});
lV = (ListView)findViewById(R.id.lV);
lV.setAdapter(adapter);
alert = new AlertDialog.Builder(this);
alert.setTitle("Ders Giriniz...");
alert.setMessage("En fazla 12 ders ekleyebilirsiniz.");
alert.setPositiveButton("Ekle", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
ayarla = getApplicationContext().getSharedPreferences(AYAR_ADI, Context.MODE_PRIVATE);
editor = ayarla.edit();
if((null!=editText.getText().toString()&&editText.getText().toString().length()>0)){
dersler.add(editText.getText().toString());
// editor.putString("ayarlist", String.valueOf(editText.getText().toString()));
alert.setView(et());
alert.show();
editor.putString("ayarlist",editText.getText().toString());
editor.commit();
}
}
});
}
答案 0 :(得分:0)
因为您没有保存数据。要保存列表视图,您可以使用数据库或使用SharedPreferences。您可以在此处查看SharedPreferences的详细用法:
http://developer.android.com/training/basics/data-storage/shared-preferences.html
以及数据库的用法:
http://developer.android.com/training/basics/data-storage/databases.html;
希望这有帮助
答案 1 :(得分:0)
发送活动:
public void Write() {
if (TextUtils.isEmpty(etDisp.getText().toString())) {
return;
} else {
// ====== ARRAY-LIST =======
sendinglist.add(etDisp.getText().toString()); // sendinglist is an ArrayList<String>
Editor editor = sp.edit(); //SharedPreferences sp;
try {
editor.putString("svalue",
ObjectSerializer.serialize(sendinglist));
} catch (IOException e) {
}
editor.commit();
}
}
从数组列表中检索。!
try {
receivinglist = (ArrayList<String>) ObjectSerializer.deserialize(sp
.getString("svalue", "N/A")); // receivinglist is an ArrayList<String>
} catch (IOException e) {
e.printStackTrace();
}
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
android.R.layout.simple_expandable_list_item_1, receivinglist);
setListAdapter(adapter);
我目前正在我的项目中使用这种方法。
而ObjectSerializer.java是一个类 这涉及到这项工作的逻辑代码 您可以从Here
获取