주소록 예제를 참고해서 공부중인데..
이전에 만든 listview는 한 row 마다 들어갈 텍스트뷰나 체크박스,라디오버튼 등의 레이아웃을 마음대로 바꾸기 위해
xml을 따로 만들었는데요,
이 예제는 보니 listview만 참고하더라구요.. 안의 글씨크기나 라디오버튼 간격을 조정하려고
1에서 2로 변경했는데요.
1.setListAdapter(new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1, new_name));
//new_name은 한 줄 마다 들어갈 전화번호부에 저장된 사람의 이름+번호..
2.
setListAdapter(new ArrayAdapter<String>(this, R.layout.listview_addr,R.id.addrText, new_name));
//listview_addr가 listview 한 줄마다 들어갈 텍스트뷰와 라디오버튼 xml입니다.
//addrText는 textView 아이디 입니다.
라디오버튼과 텍스트뷰는 제가 원하는데로 레이아웃이 나오는데, 문제는 기능 자체가 먹통이 되었네요.
라디오버튼
이것저것 고치다보니 어느 부분에서 실수했는지 모르겠습니다.
1에서는 listView 한 줄을 클릭하면 라디오버튼이 눌리면서 해당 줄의 회원 정보를 toast로 팝업시켰었습니다.
그리고 질문대로, xml말고 코드 내에서 직접 text크기를 바꿀 수 있는 방법도 알고싶습니다..
Cursor cursor = getURI(); // 전화번호부 가져오기
int end = cursor.getCount(); // 전화번호부의 갯수 세기
name = new String[end]; // 전화번호부의 이름을 저장할 배열 선언
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] += " ";
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(); // 반드시 커서 닫고
setListAdapter(new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_1, // 멀티->싱글
new_name));
listView = getListView();
listView.setChoiceMode(ListView.CHOICE_MODE_SINGLE); // 반드시 설정해줘야 싱글초이스
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
// String mes="";
long num[] = listView.getCheckItemIds(); // 현재 체크된 id들의 배열 리턴
// 화면표시 - 여기서 얻어온 값들 처리하심
for (int i = 0; i < num.length; i++) {
mes = name[(int) num[i]]; // position:위치
mes += "\n";
}
Log.e(tag, mes); // 로그 출력
Toast.makeText(address.this, mes, Toast.LENGTH_SHORT).show();
// 전화번호 추출
StringBuffer sb = new StringBuffer();
for (int i = 0; i < mes.length(); i++) {
if (Character.isDigit(mes.charAt(i))) {
sb.append(mes.charAt(i));
}
}
phoneText = sb.toString();
// Toast.makeText(address.this, "전화번호:"+sb,
// Toast.LENGTH_SHORT).show();
}
});
이전에 만들었던 리스트뷰로 다시 수정 중인데, 조언 해주시면 감사하겠습니다.