1

He estado tratando de guardar y cargar un ArrayList de cadenas.No work.Even no veo ningún error también. Por favor.

public class toDoList extends ListActivity {
private Button done;
private ListView theList;
private EditText listItem;
private ArrayList<String> listOfList = new ArrayList<String>();
private ArrayAdapter<String> adapter;


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_to_do_list);

    done = (Button) findViewById(R.id.doneBtn);
    theList = (ListView) findViewById(android.R.id.list);
    adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, listOfList);

    FileInputStream fis;
    ObjectInputStream ois;

    done.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            listItem = (EditText) findViewById(R.id.taskTextView);
            if (listItem.getText().toString() == "") {

            } else { //adding items to the listview
                listOfList.add(listItem.getText().toString());
                listItem.setText("");
                adapter.notifyDataSetChanged();
            }
        }
    });
    setListAdapter(adapter);
    try{
        fis = openFileInput("ToDo");
        ois = new ObjectInputStream(fis);
        listOfList = (ArrayList<String>) ois.readObject();
    }catch(IOException e){
        Log.e("ToDoInput", "Can't import todo");
    } catch (ClassNotFoundException e) {
        e.printStackTrace();
    }


}

@Override
protected void onPause(){
    super.onPause();
    FileOutputStream fos;
    ObjectOutputStream ous = null;

    try{
        fos = openFileOutput("ToDo", Activity.MODE_PRIVATE);
        ous = new ObjectOutputStream(fos);
        ous.writeObject(listOfList);
    }catch(IOException e){
        Log.e("ToDo", "Something wrong with output?");
    }finally {
        try{
            if(ous != null) {
                ous.close();
            }
        }catch(IOException e){
            e.printStackTrace();
        }
    }


}
  • me parece que el problema en realidad es que no se obtiene una Lista en esta línea listOfList = (ArrayList) ois.readObject(); por esa razón no llena el adapter. – Jorgesys Apr 19 '16 at 16:50
  • No tiene porque ser así, si no entra en el *if*, la lista *listOfList* estará inicializada pero sin elementos, por tanto no contendrá ningún String. Según comenta @Neel parece que no le da excepción alguna – Ipman1971 Apr 19 '16 at 17:17

2 Answers2

1

Esta linea es lo que realmente quiere if (listItem.getText().toString() == "") { quizas busque algo como esto if(listItem.getText().toString().equals("")){

Esto == compara "referencia" no el valor. (pero no se si esto es lo que busca o el cambio solucione su problema pero puede probar si el error esta por ahi).

Angel Angel
  • 9,623
  • 9
  • 37
  • 68
1

Prueba con esto, comprobamos que listItem no es nulo y además no este vacio.

done.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        listItem = (EditText) findViewById(R.id.taskTextView);
        if (isEditTextNotNull(listItem)) {
            //adding items to the listview
            listOfList.add(listItem.getText().toString());
            listItem.setText("");
            adapter.notifyDataSetChanged();
        }
    }
});

private boolean isEditTextNotNull(EditText listItem) {
  return listItem.getText().toString()!=null && !listItem.getText().toString().isEmpty();
}
Ipman1971
  • 901
  • 4
  • 10