마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

listview 내에 spinner 입력 받기

0 추천
cursor를 이용하여 db에 있는 값을 리스트에 뿌려주었습니다.

그런데 각 리스트 아이템 중 절반은 왼쪽에 글씨와 오른쪽에 체크박스를,

절반은 오른쪽에 spinner를 두었기 때문에

getView를 이용해서 각각의 아이템을 처리하였습니다.

체크박스와 스피너에 사용자가 입력한 값에 따라 사용자 정보를 다시 db에 저장하려고 합니다.

체크박스는 onItemClick(AdapterView<?> parent, View view, int position, long id) 함수를 이용하면 몇번째 리스트 아이템인지 position 값을 통해 알 수 있기 때문에 문제가 없었습니다만

 

스피너는 onItemSelected(AdapterView<?> parent, View view, int itemPosition, long id) 함수를 각 스피너에 적용하여도  여기서의 position은 spinner 보기 중 몇번째 선택지인지를 저장하고 있기 때문에 해당 스피터가 몇번째 리스트 아이템에 있는지 알 길이 없습니다.

 

getView(int position, View convertView, ViewGroup parent) 내에서는 view 를 recycle 하려는 성질 때문에 getView 함수 내에서의 position도 리스트 아이템 번호로 사용하지 못하네요

해결할 수 있는 방법이 있을까요?ㅠ_ㅠ
샹쿔오수 (210 포인트) 님이 2014년 8월 20일 질문

1개의 답변

+1 추천
여러 해결방법이 있겠지만서도..
 
그냥 position을 원하신다면 tag를 이용하는게 어떨까요
 
getView에서 spinner에 태그로 position을 넣어두고 나중에 onItemSelected에서 꺼내는 식이죠
 
 
 
getView(int position, View convertView, ViewGroup parent) {
 
spinner.setTag(position);
 
}
 
 
 
onItemSelected(AdapterView<?> parent, View view, int itemPosition, long id){
 
int pos = (Integer)parent.getTag();
 
}
alkyne (22,960 포인트) 님이 2014년 8월 20일 답변
해결했습니다 감사합니다! tag 유용하게 사용할 수 있겠네요
...