ListView数据在每次启动时都会被删除

时间:2014-03-19 22:51:20

标签: android android-listview

我已经创建了一个动态的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();

        }
    }
});

}

2 个答案:

答案 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)

是的,如果你仍然找到答案,那么我有一个,即使经过长时间的搜索,我确实找到了这个有效的解决方案。 我使用array-list创建了将信息存储到Shared-Preferences中的功能。

发送活动:

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

获取