아래가 주소록 그룹으로 나타내기 소스단입니다.

커서로 주소록 그룹id와 그룹명을 얻어와
그것을 ArrayList로 담고

ArrayAdapter로 ListView에 나타내는 소스입니다.
테스트하기가 정말 힘드네요.. ArrayList에 담지않고
커서를 SimpleCursorAdapter로 나타내면결과가 나옵니다.
ArrayList로 담아서 ArrayAdapter로 나타내면 왜 안될까요..ㅜ

ArrayList로 담는 이유는 나중에 List에 대한 처리를 좀더 편하게 하기 위함입니다.
layout파일은 따로 올리지는 않겠습니다..(어차피 별 상관없으니....)


import java.util.ArrayList;
import android.app.ListActivity;
import android.content.Context;
import android.database.Cursor;
import android.os.Bundle;
import android.provider.ContactsContract;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.TextView;
public class GroupActivity extends ListActivity {   
 
 private static ArrayList<Group> groupList;
 private ArrayAdapter<Group> groupAdapter;
 
 /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.address);       
        groupList = new ArrayList<Group>();
        //ListView lv = (ListView)findViewById(R.id.listAddrList);   
        groupAdapter = new ArrayAdapter<Group>(this, R.layout.addresschildview, groupList);
        setListAdapter(groupAdapter);
    }
    /**
     * 그룹ID얻기
     * @param context
     * @return
     */
    private static final String[] GROUP = new String[]{     
     ContactsContract.Groups._ID,
     ContactsContract.Groups.TITLE,     
    };
   
    private void getGroupCursor(Context context){
     Cursor cursor = context.getContentResolver().query(ContactsContract.Groups.CONTENT_URI, new String[]{ContactsContract.Groups.TITLE,},
          ContactsContract.Groups.DELETED + " = 0" + " AND " + ContactsContract.Groups.GROUP_VISIBLE + " = 1",
          null, null);
     int id = cursor.getColumnIndexOrThrow(ContactsContract.Groups._ID);
     int title = cursor.getColumnIndexOrThrow(ContactsContract.Groups.TITLE);
     Log.i("GETGROUPCURSOR", "**CURSOR BEGIN***" +cursor.getCount()+" " + cursor.getColumnCount());
     if(cursor.moveToFirst()){
      do{
       int groupId = cursor.getInt(id);
       String groupTitle = cursor.getString(title);
       
       groupList.add(new Group(groupId, groupTitle));
      }while(cursor.moveToNext());
     }   
     
    }    
    /**
     * ArrayAdapter 구현 클래스
     *
     */
 public class GroupList extends ArrayAdapter<Group>{
  private ArrayList<Group> items;
  
  public GroupList(Context context, int textViewResourceId,
    ArrayList<Group> item) {
   super(context, textViewResourceId, item);
   this.items = item;
  }
  @Override
  public View getView(int position, View convertView, ViewGroup parent) {
   
   View v = convertView;
   if(v == null){
    LayoutInflater vi =
     (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    
    vi.inflate(R.layout.addresschildview, null);
   }
   
   Group group = items.get(position);  
     
   if(group != null){
    TextView groupId = (TextView)findViewById(R.id.txtAddressChildViewGroupId);
    TextView groupTitle = (TextView)findViewById(R.id.txtAddressChildViewGroupTitle);
    if(groupId != null){
     groupId.setText(group.getId());     
    }
    if(groupTitle != null){
     groupTitle.setText(group.getGroupTitle());
    }
   } 
   
   return v;
  }
  
  
     
    }  
   
    public class Group{
     private String groupTitle;
     private int id;
       
     public Group(int id, String groupTitle) {
   super();
   this.groupTitle = groupTitle;
   this.id = id;
  }
     
  public String getGroupTitle() {
   return groupTitle;
  }
  public void setGroupTitle(String groupTitle) {
   this.groupTitle = groupTitle;
  }
  public int getId() {
   return id;
  }
  public void setId(int id) {
   this.id = id;
  }
     
      
    }
}