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");
}
}
を解決する
としてあなたplayerListを作っ試してみます'?それは単にエラーを投げる? – Matt
プライベートstatic ArrayList playerList = new ArrayList (); これは、アクティビティに保存する場合はこれを使用します。あなたの目的を解決することができます。それまで私はあなたのコードを試し、あなたのコードで何がprobなのかを知らせます。あなた自身のsharedPreferencesファイルに保存しようとしました –
AAnkit
いいですね、いいえ私は以前にsharedPreferencesを使ったことはありません。 – Matt