안드로이드 개발 질문/답변
(글 수 45,052)
해결책이 떠오르지 않아서 고수님들의 의견을 듣고자 질문드립니다..!
간단히 설명하면 다이얼로그에 입력받은 값을 서버에 보내고 응답을 받아서 그 값을 Listview에 add 하고 싶습니다.
다이얼로그는 Dialog 클래스에서 직접 상속받아 UI와 이벤트 핸들러를 구현했습니다.
이 다이얼로그는 메인 Activity에서 메뉴옵션아이템 클릭으로 띄워지는데, 다이얼로그 클래스에서 dismiss() 호출이되면
당연히 메인 Activity로 돌아오잖아요~? 근데 이때 view가 멈춰서 변화가 없는 겁니다..?!
다시 말하면, 제가 입력한 값이 제대로 출력이 안됩니다ㅠ_ㅠ
곰곰히 코드를 살펴보니, dismiss() 호출될때 Adapter가 코드상에 없었습니다.
그래서 추가해주려고 보니, Dialog 클래스를 이미 상속을 받아서 Acitivity나 ListActivity 추가 상속이 안되는데..
그래서 생성자가 ListView인 메인 클래스에서 Adapter를 호출해 줘야하는데 이걸 dismiss() 를 감지해서 뭐 이를테면
말은 안되지만..
if(CustomDialog.dislmiss()){
setListAdapter(mainActivity.this)
};
이런 식으로 Adapter를 다이얼로그가 값 입력을 받았을때만 혹은 dismiss()호출이 됐을때 설정 해줄 수 있을까요~?
이 경우엔 어떻게 ListView에 추가 할 수 있을까요?ㅠ_ㅠ
notifyDataSetChanged()이 해결책인 것 같은데 어느 위치에서 호출해야 하는지 잘 모르겠습니다.
도움좀 부탁드립니다 굽신굽신..
2011.12.17 13:31:45
제가 인제 안드로이드 시작해서 아는 게 없네요. 근데 질문을 보니까 몇가지 아이디어가 있을 것 같은데요.
1. Dialog로 activity를 넘긴다. ListView도 넘겨주면 Dialog내에서도 ListView까지 갱신해 줄 수도 있지 않을까요?
2. Dialog 클래스 찾아보니까 setOnDismissListener라고 있던데 여기다 리스너를 지정해서 사용하셔도 되지 않을까요?
3. Dialog대신 Activity를 사용해서 startActivityForResult사용해서 처리한다.
그리고 Dialog에서 해당 뷰가 안그려지는 부분에 대한 설명이 짧아서 정확히 어떤 상황인지는 모르겠지만, 왜 그런 현상이 생기는지 확인해 보시는 것도 좋을 듯합니다.




값을 입력하고 ok버튼을 누르게 만든게 아니신가요? 그렇다면 단순히 ok버튼에 리스너를 달면 될텐데요. 꼭 dismiss로 해야되는 이유가 있는지