안드로이드 개발 질문/답변
(글 수 45,052)
안녕하세요 DB기반 어플을 작성하고 있습니다.
작성하다보니 이슈가 있어서 팀내에서도 의견이 분분하여 이곳 계시판에 질문겸 여러 고수님의 의견을 들어보고 싶습니다.
먼저 다음과 같이 DB를 설계하였습니다.(임의로 작성한 것입니다.)
_id name type
1 aaaa a
2 bbbb b
3 dddd a
4 eeee a
5 fffffff b
위 Table에 있는 내용을 List에 바인딩 시키기 위하여 DTO 성격의 객체를 만들어 처리할려고 합니다.
물론 simpleCursorAdapter로 처리해도 되지만, simpleCursorAdapter를 사용할 경우
list에서 click 을 하여 처리를 할때 받아 오는 값이 _id값이므로 각 row별 type 속성을 가져올려면
table을 한번더 조회해야 할 것 같아서, DTO를 이용하여 처리하려고 합니다.
버튼 같은경우 버튼을 누르면 위 테이블에 내용이 List로 나오고 항목을 선택하면, name이 버튼에 text로 박히고,
저장을 누르면 별도의 table에 선택된 항목의 _id를 저장할려고 합니다. 이경우 버튼의 경우에는 객체로 binding하는
방법이 없어서(제가 못 찾은 것일 수도 있겠지만.. ) 문제가 되더라구요.
그렇다고 다른 테이블에 name의 값을 넣어주는것은 참조 무결성의 문제가 발생할수 있기 때문에 답은 아닌 것같구요.
본격적으로 질문 드리겠습니다.
질문1. 현재 List에 객체를 binding 하고 있는데, 이것이 항목이 많아진다면 각 항목별로 객체가 생성되기에 문제가 될 수도 있을 거 같습니다. 그냥 simpleCursorAdater를 이용해서 list에는 id만 가지고 있고 항목을 선택할 때마다 DB에서 조회하는게 더 올바른 방법일까요?
제가 알기론 실제 Java로 Enterprise Application같은거 조회할때 가장 자원이 많이 소비하는 부분이 DB connection을 맺고 해제하는 부분으로 알고 있는데요 이것이 모바일, 즉 안드로이드에도 적용되는 말인지요?
질문2. 버튼에 데이터를 바인딩할 방법이 없다면 위의 같은경우(실제로 보여지는것은 name이지만 뒤에서는 _id를 가지고 있어야하는 경우) 에는 어떻게 처리해야 할까요?
쓰다보니 장문의 글이 되었네요.. 두서도 없고... 아무튼 여러 고수님들의 가르침을 기다립니다.
감사합니다.
작성하다보니 이슈가 있어서 팀내에서도 의견이 분분하여 이곳 계시판에 질문겸 여러 고수님의 의견을 들어보고 싶습니다.
먼저 다음과 같이 DB를 설계하였습니다.(임의로 작성한 것입니다.)
_id name type
1 aaaa a
2 bbbb b
3 dddd a
4 eeee a
5 fffffff b
위 Table에 있는 내용을 List에 바인딩 시키기 위하여 DTO 성격의 객체를 만들어 처리할려고 합니다.
물론 simpleCursorAdapter로 처리해도 되지만, simpleCursorAdapter를 사용할 경우
list에서 click 을 하여 처리를 할때 받아 오는 값이 _id값이므로 각 row별 type 속성을 가져올려면
table을 한번더 조회해야 할 것 같아서, DTO를 이용하여 처리하려고 합니다.
버튼 같은경우 버튼을 누르면 위 테이블에 내용이 List로 나오고 항목을 선택하면, name이 버튼에 text로 박히고,
저장을 누르면 별도의 table에 선택된 항목의 _id를 저장할려고 합니다. 이경우 버튼의 경우에는 객체로 binding하는
방법이 없어서(제가 못 찾은 것일 수도 있겠지만.. ) 문제가 되더라구요.
그렇다고 다른 테이블에 name의 값을 넣어주는것은 참조 무결성의 문제가 발생할수 있기 때문에 답은 아닌 것같구요.
본격적으로 질문 드리겠습니다.
질문1. 현재 List에 객체를 binding 하고 있는데, 이것이 항목이 많아진다면 각 항목별로 객체가 생성되기에 문제가 될 수도 있을 거 같습니다. 그냥 simpleCursorAdater를 이용해서 list에는 id만 가지고 있고 항목을 선택할 때마다 DB에서 조회하는게 더 올바른 방법일까요?
제가 알기론 실제 Java로 Enterprise Application같은거 조회할때 가장 자원이 많이 소비하는 부분이 DB connection을 맺고 해제하는 부분으로 알고 있는데요 이것이 모바일, 즉 안드로이드에도 적용되는 말인지요?
질문2. 버튼에 데이터를 바인딩할 방법이 없다면 위의 같은경우(실제로 보여지는것은 name이지만 뒤에서는 _id를 가지고 있어야하는 경우) 에는 어떻게 처리해야 할까요?
쓰다보니 장문의 글이 되었네요.. 두서도 없고... 아무튼 여러 고수님들의 가르침을 기다립니다.
감사합니다.
2010.02.27 23:46:11
1번의 경우, column 의 수가 정말 많으면 모르겠지만, List에 객체를 바인딩 하시는게 좋지 않을까 합니다. SimpleCursorAdapter 를 사용하시면서, 커스텀한 ViewBinder 객체를 하나 만드셔서 (특정 Cursor 에서 필요한 정보를 객체로 모으 신 후, 해당 정보를 어떤식으로도 바인딩 하게 만든) item 클릭 시, 해당 뷰에서 바인딩 된 객체를 참조하시면, SimpleCursorAdapter 를 사용하시면서도 객체를 바인딩 하실 수 있지 않을까 싶습니다.
2번 질문의 경우, 간단하게 Button 을 Extend 해서 필요한 데이터를 바인딩 하기위한 API 만 추가하시면 어떨까 합니다.