2013-12-01 3 views
0

Я получил этот код в своем приложении, мне нужно, чтобы при нажатии «ОК» или «Борар» на всплывающем диалоговом окне сохраните ArrayList «al», поэтому, когда я закрываю приложение и открываю он снова, в списке есть предыдущие элементы, я так старался, но я не могу это понять, я начал с java 6 дней назад, поэтому у меня нет большой идеи, спасибо!Сохранить ArrayList в память и прочитать его

public class Iniciado extends Activity { 

    TextView tv3; 
    ListView listView; 
    final Context context = this; 
    final ArrayList<String> al = new ArrayList<String>(); 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.iniciado); 
     conseguirdatos(); 
     tv3=(TextView)findViewById(R.id.tv3); 
     Bundle bolsar = getIntent().getExtras(); 
     tv3.setText("Bienvenido "+ bolsar.getString("NombreKey")); 
     listView = (ListView)findViewById(R.id.list); 

     // Defined Array values to show in ListView 
     final ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, android.R.id.text1, al); 

     // Assign adapter to ListView 
       listView.setAdapter(adapter); 

       // ListView Item Click Listener 
       listView.setOnItemClickListener(new OnItemClickListener() { 

        @Override 
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 

        // ListView Clicked item index 
        final int itemPosition  = position; 

        // ListView Clicked item value 
        String itemValue = (String) listView.getItemAtPosition(position); 

         // Show Alert 
         Toast.makeText(getApplicationContext(), 
         "Position :"+itemPosition+" ListItem : " +itemValue , Toast.LENGTH_LONG) 
         .show(); 

         // Make Dialog     
         final Dialog dialog = new Dialog(context); 
         dialog.setContentView(R.layout.cambiar); 
         dialog.setTitle("Editar evento"); 

         // set the custom dialog components - text, image and button 

         final EditText editar = (EditText)dialog.findViewById(R.id.eteditar); 
         editar.setText(itemValue); 
         Button okBtn = (Button) dialog.findViewById(R.id.okbtn); 
         Button borrarBtn = (Button) dialog.findViewById(R.id.borrarbtn); 
         // if button is clicked, close the custom dialog 
         okBtn.setOnClickListener(new OnClickListener() { 
          @Override 
          public void onClick(View v) { 
           String recuperado = editar.getText().toString(); 
           al.set(itemPosition, recuperado); 
           ArrayAdapter<String> adapter = new ArrayAdapter<String>(Iniciado.this, android.R.layout.simple_list_item_1, android.R.id.text1, al); 
           adapter.notifyDataSetChanged(); 
           dialog.dismiss(); 
           } 
         }); 
         borrarBtn.setOnClickListener(new OnClickListener() { 
          @Override 
          public void onClick(View v) { 
           al.remove(itemPosition); 
           adapter.notifyDataSetChanged(); 
           dialog.dismiss(); 
          } 
         }); 
         dialog.show(); 
        } 
      }); 
    } 

    private void conseguirdatos() { 

     if(al.size() == 0){ 
      al.add("C"); 
      al.add("A"); 
      al.add("E"); 
      al.add("B"); 
      al.add("D"); 
      al.add("F"); 
      al.add("C"); 
      al.add("A"); 
      al.add("E"); 
      al.add("B"); 
      al.add("D"); 
      al.add("F"); 
      al.add("C"); 
      al.add("A"); 
      al.add("E"); 
      al.add("B"); 
      al.add("D"); 
      al.add("F"); 
      al.add("C"); 
      al.add("A"); 
      al.add("E"); 
      al.add("B"); 
      al.add("D"); 
      al.add("F"); 
      } 

    } 
} 
+0

сохранить его как XML затем загрузить в ArrayList .. – subash

+0

вы должны ' сохраняйте свои данные. :) – nachokk

ответ

1

Это то, что вы хотите:

public static ArrayList<String> readList(Context c){// 
    try{ 
     FileInputStream fis = c.openFileInput("NAME"); 
     ObjectInputStream is = new ObjectInputStream(fis); 
     ArrayList<String> list = (ArrayList<String>)is.readObject(); 
     is.close(); 
     return list; 
    }catch(Exception ex){ 
     ex.printStackTrace(); 
     return null; 
    }    
} 

public static void writeList(Context c, ArrayList<String> list){ 
    try{ 
     FileOutputStream fos = c.openFileOutput("NAME", Context.MODE_PRIVATE); 
     ObjectOutputStream os = new ObjectOutputStream(fos); 
     os.writeObject(list); 
     os.close(); 
    }catch(Exception ex){ 
     ex.printStackTrace(); 
    } 
} 
+0

Извините, но где мне нужно положить это, чтобы оно работало? и как я могу заставить функцию работать? благодаря! – user3052858

+0

Поместите их где-нибудь там, где они вам нужны, как conseguirdatos(). Чтобы прочитать массивList: ArrayList myList = readList (this). Чтобы написать список: writeList (это, myList); –

+0

Извините за проблемы, можете ли вы добавить мне skype на одну секунду, чтобы помочь мне с этим кодом? это Gonzalo.pozzo4 – user3052858

0

НЕ используйте final ArrayList<String> al = new ArrayList<String>(); каждый раз, когда вы запускаете приложение, оно будет повторно инициализировать al на совершенно новый массив.

Во-вторых, есть несколько встроенных способов в Android для сохранения программных данных и информации. Проверьте здесь: http://developer.android.com/guide/topics/data/data-storage.html

Надежда это то, что вы искали :)

Смежные вопросы