package kr.co.list;
import java.util.ArrayList;
import android.app.Activity;
import android.content.Context;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.util.Log;
import android.util.SparseBooleanArray;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.Toast;
public class ListbasicActivity extends Activity {
 
 ArrayList<String> Items;
 ArrayAdapter<String> Adapter;
 ListView list;
 private SharedPreferences pref = null;
 int t1;
 
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
       
        //리스트뷰에 저장될 텍스트
        Items = new ArrayList<String>(); 
        
        SharedPreferences prefs = getSharedPreferences("my", Activity.MODE_PRIVATE);
        t1 = prefs.getInt("start", 0);
        
        Log.i("test", ""+t1);
       
        
  for(int i=0; i<t1; i++){
        String tx;
  tx = prefs.getString(""+i, "asdf");     //우선 이미로 디폴트 값 asdf  //와나 이래노면 asdf밖에 안나오노
        Items.add(i, tx);
  }
       // SharedPreferences prefs = getSharedPreferences("mypref", Activity.MODE_PRIVATE);    
        //Log.d("shim", prefs.getString(""+0, ""));
        
        Adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_checked, Items);
        
        
        list = (ListView)findViewById(R.id.list);
        list.setAdapter(Adapter);
        list.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);
        list.setOnItemClickListener(mItemClickListener);
       
       
    }
                
    public void mOnClick(View v){
     EditText ed = (EditText)findViewById(R.id.newitem);
     switch(v.getId()){
     
     case R.id.add:  //Items를 추가할 때 
      String text = ed.getText().toString();
      if(text.length() != 0){
       Items.add(text);
       ed.setText("");
       Adapter.notifyDataSetChanged();
      }
      break;
      
      
     case R.id.delete:  //Items를 삭제할때 뒤에서 부터 삭제 한다. 앞에서 삭제하묜 엊갈려서 힘들다.
      SparseBooleanArray sb = list.getCheckedItemPositions();
      if(sb.size() !=0 ){
       for(int i = list.getCount() -1; i>=0; i--){
        if(sb.get(i)){
         Items.remove(i);
        }
       }
       list.clearChoices();
       Adapter.notifyDataSetChanged();
      }
      break;
     }
    }
    AdapterView.OnItemClickListener mItemClickListener = new AdapterView.OnItemClickListener() {
     @SuppressWarnings("unchecked")
     public void onItemClick(AdapterView parent, View view, int position, long id){
      String mes;
      mes = "Select Item = " + Items.get(position);
      Toast.makeText(ListbasicActivity.this, mes, Toast.LENGTH_SHORT).show();
     }
     
 };
 
 protected void onPause(){
  super.onPause();
  pref = getSharedPreferences("SaveState", 0);
  
  //저장을 위해 Edit객체 호출
  SharedPreferences.Editor edit = pref.edit();
  
  //지금까지 생성된 리스트뷰 텍스트 저장
  for(int i =0; i<list.getCount(); i++){
  edit.putString(""+i, Items.get(i) );
  edit.putInt("start", i);
  
  //변경된 값 저장
  edit.commit();
  }
 }
 
 }
 
 
 

 

안녕하세요 여러분!!~ 갓 안드로이드 초보자입니다. ^^

 

현재 제가 리스트뷰를 써서 항목을 추가하고 삭제 하는 것을 작성했는데

 

어플을 종료하였을경우(뒤로가기?) 그 전에 저장했던 값들이 사라집니다. ㅠ_ㅠ

 

그래서 다시 어플을 시작했을 때 저장했던 값을 불러오기 위해서

 

SharedPreferences를 사용하는데 맨밑의 onPause()는 어플사용중에 종료하였을경우

 

자료들을 저장해 DDMS에 XML파일로 저장되는것을 봤습니다.

 

그러나! 위의 SharedPreferences을 사용해서 읽어와 리스트뷰에 추가를 하고 싶은데

 

읽어 오질 못합니다. 디폴트만 리스트항목에 추가 됩니다. 어떻게 된걸까요 ㅠㅠ

 

글 읽어주셔서 감사합니다. ^^ 여러분