2012-01-19 10 views
0

私はActivityを持っています。これはユーザーが名前を入力して保存することができます。 Buttonをクリックすると、名前がArrayに追加され、ListViewにも表示され、名前を削除するオプションが表示されます。アクティビティ内で配列を保存する

私の質問は、私はすべての名前を再度入力する必要はありませんので、ユーザはActivityを離れた場合、その後に保存されていますバックActivityArrayListViewに来るポイントを取得しようとしていますです。現時点ではActivityが残ってからArrayに戻り、ListViewが空になります。

私は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

あなたはそれはあなたが `onSaveInstanceState`の平均と` onRestoreInstanceState`は `公共の静的な無効である必要があり、あなたの目的

+0

を解決する

static 

としてあなたplayerListを作っ試してみます'?それは単にエラーを投げる? – Matt

+0

プライベートstatic ArrayList playerList = new ArrayList (); これは、アクティビティに保存する場合はこれを使用します。あなたの目的を解決することができます。それまで私はあなたのコードを試し、あなたのコードで何がprobなのかを知らせます。あなた自身のsharedPreferencesファイルに保存しようとしました – AAnkit

+0

いいですね、いいえ私は以前にsharedPreferencesを使ったことはありません。 – Matt

関連する問題