안드로이드 개발 질문/답변
(글 수 45,052)
리스트뷰를 만들었습니다.
한개의 아이템을 롱클릭해서 삭제 여부를 묻는 다이얼 로그를 띄우고
"예"를 선택하면 지우려 합니다.
문제는 포지션 값을 받아 오는게 문제 인데요... 롱클릭까지는 포지션값을 가져오는데... 리스너로 어케 넘겨야 하는지요??
아래 소스를 좀 봐주세요~!
아 물론 변수 선언해서 그곳에 저장하고 리스너에서 그 변수를 부르면 됩니다만... position을 넘길수 있는 방법이 있지 않을까 해서
질문 드려 봅니다.
//아이템 1개를 롱클릭 했을때
listMyGift.setOnItemLongClickListener(new OnItemLongClickListener() {
public boolean onItemLongClick(AdapterView<?> parent, View v, int position, long id) {
InitApp.vibe.vibrate(InitApp.vibeTime);
new AlertDialog.Builder(MyGift.this)
.setTitle("삭제")
.setMessage("선택한 상품을 삭제 하겠습니까?")
.setPositiveButton("예", mDelClick )
.setNegativeButton("아니오", mDelClick ).show();
return false;
}
});
//아이템 롱클릭 리스너
DialogInterface.OnClickListener mDelClick = new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
if (whichButton == DialogInterface.BUTTON_POSITIVE) {
//보관함 보기에서 삭제
listMyGift.removeViewAt(??????); <-- 여기에 positon 을 가져와야 하는데..어떻게 가져와야 할까요??
listMyGift.clearChoices();
Adapter.notifyDataSetChanged();
} else {
return;
}
}
};
2011.12.21 14:32:32
@원조안드로이드
답변 감사합니다. 본문에 보시면 적어놨습니다만... 저 또한 전역변수 지정 ---> 저장 --> 전역변수 사용 이렇게 사용하고있습니다만
제가 원하는건...mDelClcik에 값을 전달 하는 방법이 없는지에 대해 질문을 드렸던 겁니다.
바쁘신데 덧글을 달아 주셔서 감사합니다.
2011.12.21 14:53:21
아니면 position을 final 로 선언 후에 setPositiveButton 에서 온클릭리스너를 new 해서 사용하는것도...
왠지 딱맞는 방법은 없는거같네요~




전역변수(멤버필드) 지정하셔서 롱클릭 이벤트일 때 전역변수에 포지션 값을 저장하시면 됩니다.
그리고 다이얼로그의 onClick리스너에서는 해당 전역변수를 사용하면 됩니다.