2014-10-09 47 views
0

我创建了一个android应用程序,其中我在edittext中给出的值将显示在listview上,但是当我点击回到另一个活动并返回到listview活动时,listview项目将会消失。请告诉我如何在活动中永久保存列表视图项目。在Android应用程序中永久保存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(); 
+0

你在onCreate上填充你的listview吗? – 2014-10-09 17:12:52

回答

0

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

因此,您将不得不以某种方式永久保存这些添加事件。在android中,有几种方法可以持久保存。如果你想节省很多的事件,我会建议去当地sqllite db或如果你不需要担心保存这些事件很多,我会去Shared Preferences

因此,你可以做这样的事情在你的代码,如果你决定与共享偏好去:

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(); 
    } 
} 
+0

是只点击后退按钮。如何使用共享偏好列表视图项目,请给我一些参考或告诉我如何使用共享偏好保存列表视图项目。谢谢。 – 2014-10-09 17:20:44

+0

@SowmyashreeVasu当然,你不能实际上持久地保存适配器(或者listvew)的状态,所以你的目标将是保存一个代表你的列表视图发生在共享偏好中的事情。例如,您可以在共享首选项中保存从edittext获得的任何文本。然后当你回到这个活动时,如果共享首选项包含任何字符串,(这意味着我们必须在用户之前按下按钮时保存),那么检查你的共享首选项是否存在任何现有的字符串,因此我们只需将该字符串添加到现在列表。 – 2014-10-09 17:24:31

+0

我给edittext中的值,并点击添加按钮,将保存在列表视图项目。我希望列表视图项目被永久保存,以便如果我回到listview活动这些列表视图项目应该存在。 – 2014-10-09 17:29:52