Tengo un Activity que permite al usuario ingresar nombres y guardarlos. Una vez que se hace clic en agregar Button, el nombre se agrega a Array y también se muestra en ListView con una opción para eliminar un nombre.

Mi pregunta es que estoy tratando de llegar al punto en el que si el usuario deja el Activity y luego vuelve al Activity el Array y ListView se habrán guardado No es necesario volver a introducir todos los nombres. Por el momento, una vez que se deja el Activity y luego se vuelve al Array y ListView están vacíos.

Como puede ver en la parte inferior, he intentado usar onSaveInstanceState y onRestoreInstanceState pero no puedo hacer que funcionen. ¿Alguien puede ampliar este código?

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
Matt 19 ene. 2012 a las 16:00

1 respuesta

La mejor respuesta

¿Intentas hacer tu playerList como

 static

Resolverá tu propósito

1
AAnkit 19 ene. 2012 a las 16:03
Quieres decir para onSaveInstanceState y onRestoreInstanceState debería ser public static void? ¿Eso solo arroja errores?
 – 
Matt
19 ene. 2012 a las 16:07
Private static ArrayList playerList = new ArrayList (); Quiero decir esto, si quieres guardarlo en actividad, usa esto. puede resolver tu propósito. hasta entonces, probaré su código y le haré saber cuál es el problema con su código. ¿Ha intentado guardarlo en su propio archivo de preferencias compartidas?
 – 
AAnkit
19 ene. 2012 a las 16:12
Está bien, no, nunca antes había usado sharedPreferences.
 – 
Matt
19 ene. 2012 a las 16:13
¿te funcionó? ¿O quieres que intente guardar eso en preferencias?
 – 
AAnkit
19 ene. 2012 a las 16:18