안녕하세요 ㅠㅠ

저 바보인가봐요 ㅠㅠ 다른 프로그램으로 쉽게 해결 됬던 문제들이 
안드로이드에서는 너무 안되네요 ㅠㅠ 구조도 그렇고 사용해야하는 메소드를 몰라서 그런거 같습니다.

좀 도와주세요 ㅠㅠ

리스트 

안드로이드   v
자바
C언어          v
오브젝트C
MFC

저장버튼 

리스트는 다음과 같습니다. 목록은 전화번호 부에서 전화번호 목록을 받아왔구요 ㅠㅠ

체크 한값을 어레이리스트 배열에 저장하야 log로 이름과 전화번호를 출력하는데까지는 성공했습니다.

하지만 체크 한 다음 어플 종료 후 그대로 다시 체크 하게 만들고 싶은데 어떻게 해야 하는지 모르겠습니다.

SharedPreferences을 이용해서 저장할수 있다고 하는데

이거 같은 경우 한개씩은 저장 가능한데

id
name
number 

이세개를 묵어서 id 값만 비교 해서 읽어 들일수 있을 것 같은데 저 세개를 하나의 묶음으로 어떻게 해야 하는지도 

정말 모르겠습니다.

방법좀 알려주세요 내일까지 체크 된 내용을 세로운 view에도 뛰우는것 까지 해야 하는데

전혀 감을 잡지 못하고 있습니다. ㅠㅠ

소스코드 올리도록 하겠습니다.

다시 정리하자면 

ListView에 불러온 전화 목록 중 체크한 값을 어플 종료후 다시 실행 시켰을때 그대로 체크 되게하기.
item의 객체를 id, name, number 새게를 한 그룹으로 SharedPreferences을 이용해서 저장하기
(비교값은 id)

이렇게 됩니다.

공유풀에 저장만하면 새로운 View에 뛰우는건 할수 있을것같은데
방법 좀 알려주세요

소스코드는 다음과 같습니다.
package kr.co.JTeckDecibel;

import java.util.ArrayList;
import java.util.List;

import android.app.Activity;
import android.app.ListActivity;
import android.content.Context;
import android.content.Intent;
import android.database.Cursor;
import android.net.Uri;
import android.os.Bundle;
import android.provider.Contacts;
import android.provider.ContactsContract;
import android.provider.ContactsContract.CommonDataKinds.Phone;
import android.util.Log;
import android.util.SparseBooleanArray;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.view.View.OnClickListener;
import android.widget.Adapter;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.AdapterView.OnItemSelectedListener;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.ListAdapter;
import android.widget.ListView;
import android.widget.SimpleCursorAdapter;
import android.widget.TextView;
import android.widget.Toast;

public class Phone_Address_Access extends ListActivity implements OnClickListener {
TextView selection;
private Cursor m_cPhoneCursor;
ListView contactsListView;
Button saver_btn;
Button cancel_btn;
private Cursor getCursor() {
// 주소록이 저장된 URI
Uri uContactsUri = ContactsContract.CommonDataKinds.Phone.CONTENT_URI;

// 주소록의 이름과 전화번호의 열 이름
String[] strProjection = {
ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME,
ContactsContract.CommonDataKinds.Phone.NUMBER,
ContactsContract.CommonDataKinds.Phone._ID};

// 주소록을 얻기 위한 쿼리문을 날리고 커서를 리턴
return getContentResolver().query(uContactsUri, null, null, null,
strProjection[0]);
}
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.phone_address_access);
selection = (TextView) findViewById(R.id.selection_text);
saver_btn = (Button) findViewById(R.id.phone_addr_save_btn);
cancel_btn = (Button) findViewById(R.id.phone_addr_cancel_btn);
m_cPhoneCursor = getCursor();
ListAdapter sPhoneAdapter = getAdapter();
contactsListView = getListView();
contactsListView.setAdapter(sPhoneAdapter);
contactsListView.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);
saver_btn.setOnClickListener(this);
cancel_btn.setOnClickListener(this);
}

private ListAdapter getAdapter(){
// TODO Auto-generated method stub
int iLayoutID = android.R.layout.simple_list_item_multiple_choice;
int[] iTextViewID = new int[] { android.R.id.text1, android.R.id.text2 };
String[] strProjection = {
ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME,
ContactsContract.CommonDataKinds.Phone.NUMBER,
ContactsContract.CommonDataKinds.Phone._ID};

return new SimpleCursorAdapter(this, iLayoutID, m_cPhoneCursor,
strProjection, iTextViewID);
}
public void onClick(View v) {
// TODO Auto-generated method stub
switch(v.getId()){
case R.id.phone_addr_save_btn :
printSaved(getCheckItems());
Toast.makeText(this, "Save", Toast.LENGTH_SHORT).show();
break;
case R.id.phone_addr_cancel_btn :
Toast.makeText(Phone_Address_Access.this, "TEST", Toast.LENGTH_SHORT).show();
break;
}
}
public void printSaved(ArrayList<SelectedContactItems> items)
{
Log.i("TAG", "----------------------------------");
if( items != null && items.size() > 0 )
{
for( SelectedContactItems item : items )
{
Log.i("TAG", "id : "+ item.getId());
Log.i("TAG", "name : " + item.getName());
Log.i("TAG", "number : " + item.getNumber());
}
}
else
{
Log.i("TAG", "선택값이 없습니다.");
}
Log.i("TAG", "----------------------------------");
}
public ArrayList<SelectedContactItems> getCheckItems()
{
ArrayList<SelectedContactItems> checkedItems = new ArrayList<SelectedContactItems>();
ListView v = getListView();
Adapter adapter = v.getAdapter();
SparseBooleanArray checked = v.getCheckedItemPositions();
for (int i = 0; i < checked.size(); i++) {
if(checked.valueAt(i) == true) {
Cursor c = (Cursor) adapter.getItem(i);
String id = c.getString(c.getColumnIndex(ContactsContract.CommonDataKinds.Phone._ID));
String name = c.getString(c.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME));
String number = c.getString(c.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
checkedItems.add(new SelectedContactItems(id, name, number));
}
}
return checkedItems;
}
class SelectedContactItems
{
String mId;
String mName;
String mPhoneNumber;
public SelectedContactItems(String id, String name, String number)
{
mId = id;
mName = name;
mPhoneNumber = number;
}
public void setId(String s)
{
mId = s;
}
public void setName(String s)
{
mName = s;
}
public void setNumber(String s)
{
mPhoneNumber = s;
}
public String getId()
{
return mId;
}
public String getName()
{
return mName;
}
public String getNumber()
{
return mPhoneNumber;
}
}
@Override
protected void onDestroy() {
// TODO Auto-generated method stub
super.onDestroy();
m_cPhoneCursor.close();
}
}

 

xml 파일은 다음과 같습니다.
<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >
    
    <LinearLayout android:id="@+id/phone_addr_linear"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_marginLeft="15dip"
        >
     <TextView android:text="" android:id="@+id/selection_text" 
android:layout_width="wrap_content" android:layout_height="wrap_content"/>
    </LinearLayout>
    
    <LinearLayout android:id="@+id/phone_addr_linear"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="7dip"
        android:layout_marginBottom="7dip"
        android:layout_marginLeft="15dip"
        >
        
        <TextView android:text="연락처 목록"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            />

    </LinearLayout>
    
    <LinearLayout android:id="@+id/phone_addr_btn_linear"
        android:gravity="center"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content">
        
        <Button
            android:text="확      인"
            android:id="@+id/phone_addr_save_btn"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" 
            />
        <Button
            android:text="취     소"
            android:id="@+id/phone_addr_cancel_btn"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" 
            />
    </LinearLayout>
    
<!--      <ListView 
        android:id="@+id/phane_address_LV"
         android:layout_height="wrap_content" 
         android:layout_width="match_parent"></ListView>
-->
<ListView android:id="@android:id/list"
         android:layout_width="match_parent"
         android:layout_height="match_parent"
         android:layout_weight="1"
         android:drawSelectorOnTop="false">
        
    </ListView>
</LinearLayout>

어디를 수정해야 하고 새로 생성해야 하는건 무엇인지 좀 알려주세요 부탁드리겠습니다. ㅠㅠ