我有一个Activity
,允许用户输入名称并保存。点击添加Button
后,该名称会添加到Array
,并会显示在ListView
中,并附带删除名称的选项。
我的问题是,我正试图让用户离开Activity
,然后回到Activity
Array
和ListView
已保存,因此无需再次输入所有名称。暂时Activity
离开,然后返回Array
,ListView
为空。
正如您在底部看到的,我尝试使用onSaveInstanceState
和onRestoreInstanceState
,但是如果有人可以扩展此代码,则无法让它们工作吗?
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");
}
}
答案 0 :(得分:1)
您是否尝试将播放列表设为
static
它将解决您的目的