2016-03-08 4 views
0

Я пытаюсь сохранить и загрузить строки ArrayList за последние пару дней, и я не могу заставить его работать. Это не ошибка, но она больше не добавит элементы в ListView. Я также не думаю, что это тоже экономит. Помоги пожалуйста?Сохранение и получение ArrayList, а затем добавление его в ListView

package com.evolvr.productivityapp; 

import android.app.ListActivity; 

import android.os.Bundle; 
import android.app.Activity; 
import android.util.Log; 
import android.view.Menu; 

import android.view.MotionEvent; 
import android.view.View; 
import android.widget.ArrayAdapter; 
import android.widget.Button; 
import android.widget.EditText; 
import android.widget.ListView; 

import java.io.*; 


import java.util.ArrayList; 

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(); 
      } 
     } 


    } 
+0

какая версия Android вы используете? –

+0

Я использую API 16. – Alex

+1

Вы вводите пустой адаптер в свой список, попробуйте переместить строки создания адаптера после прочтения ваших объектов. – Mohamed

ответ

0

Вы можете проверить ListItem является нулевым или пустым перед передачей

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(); 
} 
-1

пытаются взять ту же самую концепцию из этого примера:

private ArrayList<String> listOfList = new ArrayList<String>(); 
private ListView LView; 
String someText = "This is some text that will be added"; 

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

ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, listOfList); 
    LView.setAdapter(adapter); //Adds to the List View 
} 
Смежные вопросы