在活动中保存数组

时间:2012-01-19 12:00:43

标签: android

我有一个Activity,允许用户输入名称并保存。点击添加Button后,该名称会添加到Array,并会显示在ListView中,并附带删除名称的选项。

我的问题是,我正试图让用户离开Activity,然后回到Activity ArrayListView已保存,因此无需再次输入所有名称。暂时Activity离开,然后返回ArrayListView为空。

正如您在底部看到的,我尝试使用onSaveInstanceStateonRestoreInstanceState,但是如果有人可以扩展此代码,则无法让它们工作吗?

ArrayList<String> playerList = new ArrayList<String>();
ListView employeeList;
ArrayAdapter adapter;

@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.addremove);

final MyAdapter adapter = new MyAdapter(this, R.layout.listview_content, playerList);
ListView employeeList = (ListView) findViewById(R.id.namelistview);
employeeList.setAdapter(adapter);



Button confirm = (Button) findViewById(R.id.add);
confirm.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
EditText playername = (EditText) findViewById(R.id.userinput);
playerList.add(playername.getText().toString());
adapter.notifyDataSetChanged();
playername.setText("");

}});

Button play = (Button) findViewById(R.id.playnow);
play.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
Intent intent = new Intent( demo.AddRemove.this, demo.PasswActivity.class);
intent.putStringArrayListExtra("KEY", playerList);
startActivity(intent);

}});
}
class MyAdapter extends ArrayAdapter<String>{
    private OnClickListener listener; 
    public MyAdapter(Context context, int textViewResourceId, ArrayList<String> objects) {
        super(context, textViewResourceId, objects);
        listener = new OnClickListener(){
            public void onClick(View v){
            playerList.remove(v.getTag());
            notifyDataSetChanged();

            };
            };
            }


    public View getView(int position, View convertView, ViewGroup parent) {
        if( convertView== null ) convertView = getLayoutInflater().inflate(R.layout.listview_content, null);

        TextView myTextView1 = (TextView)convertView.findViewById(R.id.playername);
        myTextView1.setText(getItem(position)); 
        Button remove = (Button)convertView.findViewById(R.id.remove);
        remove.setTag(getItem(position));
        remove.setOnClickListener(listener);
        return convertView;
    }
}

 @Override
 public void onSaveInstanceState(Bundle outState) {
   // Save UI state changes to the savedInstanceState.
   // This bundle will be passed to onCreate if the process is
   // killed and restarted.
     outState.putStringArrayList("Playlist", playerList );

    super.onSaveInstanceState(outState); }


    @Override
    public void onRestoreInstanceState(Bundle savedInstanceState) {
      super.onRestoreInstanceState(savedInstanceState);
      // Restore UI state from the savedInstanceState.
      // This bundle has also been passed to onCreate.
        playerList = savedInstanceState.getStringArrayList("Playlist");


    }

}

1 个答案:

答案 0 :(得分:1)

您是否尝试将播放列表设为

 static

它将解决您的目的