0
我有一个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");
}
}
你意味着'onSaveInstanceState'和'onRestoreInstanceState'应该是'公共静态无效'?那只是抛出错误? – Matt
private static ArrayList playerList = new ArrayList (); 我的意思是,如果你想保存在活动使用这个。它可以解决你的目的。直到那时我会尝试你的代码,并让你知道你的代码是什么概率。你有没有尝试将它保存在你自己的sharedPreferences文件 –
AAnkit
好吧,不,我从来没有真正使用过'sharedPreferences'。 – Matt