안드로이드 개발 질문/답변
(글 수 45,052)
TAG : 다중 속성, multiple option, ExpandableList, 두가지 이상의 속성
안녕하세요 안드로이드 개발자입니다.
어플을 만들면서 여러가지 기능을 구현하던중에 쓸모있어보이는
ExpadableList를 알게 되었습니다. 샘플코드(sdk-sample code)에도 있어서
여러모로 분석도 해보며 대입도해보고 사용방법을 터득해가고 있습니다.
그런데 궁금한점이 생기더라구요.
1. 그룹을 선언하는방법이 배열로 되어있는데
다른방법으로 한가지한가지 레이아웃을 편집하면서 설정 할 수있을까요?
배열로 선언하면 단점이 생기더라구요.. 단순 간단한 텍스트뷰로 표시할경우에는 문제가 없지만
배열값 하나마다 여러가지옵션을 설정하려니깐 어떻게 해야될지 도저히 답이 안나오더라구요..
이를태면 대한민국(korea) 라고하는 그룹명이 있다면
두가지 옵션을 지정해본다고 해요
대한민국 (korea)+(대한민국국기.png)
이런식으로 그룹명을 주려면 앞에 대한민국은 bold에 글자크기도 크고 뒤에 (korea) 라는 글자는 이테릭체에 글자크기도 작구요..
뒤에 대한민국국기라는 옵션도 달아볼수있고요.
어떻게 해야될지 모르겠네요 그냥 리스트에서 그림조각에 글자를 넣어본적은있는데 그것도 좀 어렵게 했고 그리고 그건for문으로 그냥 돌려서 여러개를 한번에 설정하였는데 이것은 따로 따로 다 개성있는 식으로 만들려고하는데.. 배열에다 우선 선언을 하고난뒤라서 어떻게 변경을해줘야될지 모르겠네요..
2. child 에서도 다중속성에 버튼을 넣어서 클릭시에 다이얼로그 가 뜨게 만들려고합니다.
xml상에 간단하게 버튼을 넣었는데 들어가긴하는데 ... child 모든 값에 버튼이 들어가더라구요..
xml상엔 하나만 넣었구요
레이어를 나눠서 버튼과 텍스트 간단한 옵션은 지정해줬는데.. childlist 안에 있는 모든값마다 버튼이 있고없고를 다르게 지정해주고싶은데
그것또한 무리가 있더라구요..
예제자료도 외국에서 구하긴했는데 이상도많고해서.. 여기 펍 개발자여러분한테 여쭙고자 합니다. 다양한 답변좀 부탁드립니다.
아니면 관련있는 내용이라도 부탁드려요
소스코드 같다가 붙이는건 보기안좋은 짓 같아서 붙이진 않고 부분적으로만 알아보시라고할께요..
안녕하세요 안드로이드 개발자입니다.
어플을 만들면서 여러가지 기능을 구현하던중에 쓸모있어보이는
ExpadableList를 알게 되었습니다. 샘플코드(sdk-sample code)에도 있어서
여러모로 분석도 해보며 대입도해보고 사용방법을 터득해가고 있습니다.
그런데 궁금한점이 생기더라구요.
1. 그룹을 선언하는방법이 배열로 되어있는데
다른방법으로 한가지한가지 레이아웃을 편집하면서 설정 할 수있을까요?
배열로 선언하면 단점이 생기더라구요.. 단순 간단한 텍스트뷰로 표시할경우에는 문제가 없지만
배열값 하나마다 여러가지옵션을 설정하려니깐 어떻게 해야될지 도저히 답이 안나오더라구요..
이를태면 대한민국(korea) 라고하는 그룹명이 있다면
두가지 옵션을 지정해본다고 해요
대한민국 (korea)+(대한민국국기.png)
이런식으로 그룹명을 주려면 앞에 대한민국은 bold에 글자크기도 크고 뒤에 (korea) 라는 글자는 이테릭체에 글자크기도 작구요..
뒤에 대한민국국기라는 옵션도 달아볼수있고요.
어떻게 해야될지 모르겠네요 그냥 리스트에서 그림조각에 글자를 넣어본적은있는데 그것도 좀 어렵게 했고 그리고 그건for문으로 그냥 돌려서 여러개를 한번에 설정하였는데 이것은 따로 따로 다 개성있는 식으로 만들려고하는데.. 배열에다 우선 선언을 하고난뒤라서 어떻게 변경을해줘야될지 모르겠네요..
2. child 에서도 다중속성에 버튼을 넣어서 클릭시에 다이얼로그 가 뜨게 만들려고합니다.
xml상에 간단하게 버튼을 넣었는데 들어가긴하는데 ... child 모든 값에 버튼이 들어가더라구요..
xml상엔 하나만 넣었구요
레이어를 나눠서 버튼과 텍스트 간단한 옵션은 지정해줬는데.. childlist 안에 있는 모든값마다 버튼이 있고없고를 다르게 지정해주고싶은데
그것또한 무리가 있더라구요..
예제자료도 외국에서 구하긴했는데 이상도많고해서.. 여기 펍 개발자여러분한테 여쭙고자 합니다. 다양한 답변좀 부탁드립니다.
아니면 관련있는 내용이라도 부탁드려요
소스코드 같다가 붙이는건 보기안좋은 짓 같아서 붙이진 않고 부분적으로만 알아보시라고할께요..
/*
* ExpandableList 선언부분
*/
public class ExpListEx extends ExpandableListActivity {
public static final String GROUP = "그룹";
public static final String LAST_UPDATE = "마지막 수정일 : 2011년04월12일"; //단순문자부분
public static final String CHILD = "차일드"; //
public static final String BOY = "남자아이";
public static final String GIRL = "여자아이";
public String[] group = { GROUP+"1", GROUP+"2" };
public String[][] child = {
{ LAST_UPDATE, STATE_CAUTION, STATE_WARNING, STATE_DANGER },
{ LAST_UPDATE, STATE_CAUTION, STATE_WARNING, STATE_DANGER } };
ExpandableListAdapter mAdapter;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//이하생략
//공부하다 구한.. child를 눌렀을때 발생하는 이벤트 옵션? 같이보이는데..
//저에겐 적용할필요가없어서 올립니다 필요하신분은 쓰시라구..
@Override
public boolean onContextItemSelected(MenuItem item) {
ExpandableListContextMenuInfo info = (ExpandableListContextMenuInfo) item
.getMenuInfo();
String title = ((TextView) info.targetView).getText().toString();
int type = ExpandableListView
.getPackedPositionType(info.packedPosition);
if (type == ExpandableListView.PACKED_POSITION_TYPE_GROUP) {
int groupPos = ExpandableListView
.getPackedPositionGroup(info.packedPosition);
int childPos = ExpandableListView
.getPackedPositionChild(info.packedPosition);
// Toast.makeText(this, title + ": Child " + childPos +
// " clicked in group " + groupPos,
// Toast.LENGTH_SHORT).show();
return true;
} else if (type == ExpandableListView.PACKED_POSITION_TYPE_GROUP) {
int groupPos = ExpandableListView
.getPackedPositionGroup(info.packedPosition);
// Toast.makeText(this, title + ": Group " + groupPos + " clicked",
// Toast.LENGTH_SHORT).show();
return true;
}
return false;
}
// 제 생각으론 여기부분에서 어떻게 설정을 해줘야될꺼같은데..
// 여기에서 간단하게 수정 조언 부탁드립니다
public List getGroupList() {
List groupList = new ArrayList<HashMap>();
for (int i = 0; i < group.length; i++) {
HashMap map = new HashMap();
map.put("GroupName", group[i]);
groupList.add(map);
}
return groupList;
}
public List getChildList() {
List childList = new ArrayList<List>();
for (int i = 0; i < child.length; i++) {
List childchildList = new ArrayList<HashMap>();
for (int k = 0; k < child[i].length; k++) {
HashMap map = new HashMap();
map.put("ChildNames", child[i][k]);
childchildList.add(map);
}
childList.add(childchildList);
}
return childList;
}



