在Android应用程序中永久保存Listview项

时间:2014-10-09 17:09:41

标签: android

我创建了一个Android应用程序,其中我在edittext中给出的值将显示在listview上,但是当我点击返回另一个活动并返回到listview活动时,listview项目将消失。请告诉我如何在活动中永久保存listview项目。

以下是我的代码。

   public class Edit extends Activity {

ArrayList listitems = new ArrayList(); ArrayAdapter适配器;

    /** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_edit);
    getActionBar().setDisplayHomeAsUpEnabled(true);
    getActionBar().setDisplayShowHomeEnabled(false);
    final EditText et=(EditText)findViewById(R.id.editText1);
    Button bt=(Button)findViewById(R.id.button1);
    ListView lv=(ListView)findViewById(R.id.listView1);
    adapter=new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1,listitems);
    lv.setAdapter(adapter);

    bt.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            listitems.add(et.getText().toString());
            adapter.notifyDataSetChanged();

1 个答案:

答案 0 :(得分:1)

当你说回来时,我假设你说你点击后退按钮。单击后退按钮将破坏当前活动,因此所有非持久性更改都将丢失,只是向适配器添加项目是非持久性更改。

因此,您必须以某种方式持久保存这些添加事件。在android中,有几种方法可以持久保存。如果您想保存很多活动,我建议您选择本地sqllite db,或者如果您不想担心保存这些活动,我会选择Shared Preferences。< / p>

因此,如果您决定使用共享首选项,则可以在代码中执行类似的操作:

bt.setOnClickListener(new OnClickListener() {



  @Override
    public void onClick(View v) {
        // TODO Auto-generated method stub
        listitems.add(et.getText().toString());

        adapter.notifyDataSetChanged();

       saveStringToPreferences(et.getText());

}

private void saveStringToPreferences(String str){
     SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this);
     SharedPreferences.Editor editor = preferences.edit();
     editor.putString("label", str);
     editor.apply();
}

现在,当您返回活动时,将项目重新加载到列表中:

public void onResume(){
    super.onResume();
    SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this);
    String previousText = preferences.getString("label", "");
    if(! TextUtils.isEmpty(previousText)){
        listitems.add(et.getText().toString());
        adapter.notifyDataSetChanged();
    } 
}