안녕하세요
주소록 구현을 좀 하고 있는데
인터넷에 있는거 받아와서 했더니 그냥 리스트뷰만 떠서
버튼이랑 좀 넣고 싶어서 레이아웃 xml로 따로 만들어서 넣었더니 계속 오류가 떠서요
public class addPhoneActivity extends ListActivity {
String tag = "cap";
String [] name, new_name;
int count = 0;
ListView friendslist;
ArrayAdapter<String> adapter;
Button select;
Button cancle;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.addphonenum);
Cursor cursor = getURI(); // 전화번호부 가져오기
int end = cursor.getCount(); // 전화번호부의 갯수 세기
name = new String[end]; // 전화번호부의 이름을 저장할 배열 선언
friendslist = (ListView)findViewById(R.id.friendslist);
select = (Button)findViewById(R.id.okbtn);
cancle = (Button)findViewById(R.id.canclebtn);
Intent intent = getIntent();
String[] bbStr = cursor.getColumnNames();
for(int i=0; i<bbStr.length;i++)
// 각각의 컬럼 이름 확인
Log.e(tag, "ColumnName " + i + " : " + cursor.getColumnName(i));
if(cursor.moveToFirst()) { //항상 처음에서 시작
do {
if(!cursor.getString(2).startsWith("01")) // 01로 시작하는 핸펀만
continue; // 이멜주소만 있는것은 제외
// 요소값 얻기
name[count] = cursor.getString(1); //이름
name[count] += "\n";
name[count] += cursor.getString(2); //전번
count++;
} while(cursor.moveToNext());
new_name = new String[count]; //이멜주소 제외한 01번호 가져오기
for(int i=0; i<count; i++) new_name[i] = name[i]; //복사
}
cursor.close(); // 반드시 커서 닫고
adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_multiple_choice, new_name);
friendslist.setAdapter(adapter); // 리스트뷰
friendslist.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE); // 반드시 설정해줘야 멀티초이스
friendslist.setOnItemClickListener(new AdapterView.OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
String mes="";
long num[] = friendslist.getCheckItemIds(); // 현재 체크된 id들의 배열 리턴
if(num.length>5) { // 최대 선택가능 갯수 제한
friendslist.setItemChecked(position, false); // 강제로 언첵
Toast.makeText(addPhoneActivity.this,
"5개까지만 선택이 가능합니다.",
Toast.LENGTH_SHORT).show();
return;
}
// 화면표시 - 여기서 얻어온 값들 처리하심됨
mes = "선택된사람 : \n";
for(int i=0; i<num.length;i++) {
mes += i + " : " + name[(int)num[i]];
mes +="\n";
// Intent intent = new Intent();
// String num1 = mes;
// intent.putExtra("TextOut", 1);
// setResult(RESULT_OK,intent);
}
Log.e(tag, mes);
Toast.makeText(addPhoneActivity.this, mes, Toast.LENGTH_SHORT).show();
}
});
}
private Cursor getURI() {
Uri uri = ContactsContract.CommonDataKinds.Phone.CONTENT_URI;
String[] projection = new String[] { // 세개만 프로젝션함
Contacts._ID,
ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME,
ContactsContract.CommonDataKinds.Phone.NUMBER
};
// 정렬방식 설정
String sortOrder = ContactsContract.Contacts.DISPLAY_NAME + " COLLATE LOCALIZED ASC";
return managedQuery(uri, projection, null, null, sortOrder);
}
}
이거저거 건들다보니까 조금 달라지긴했는데
setContentView(R.layout.addphonenum);
이부분을 하면 주소록이 보여지지도 않네요 ㅜㅜ