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

database를 화면 이동 안해도 바로 갱신하는 방법...ㅜ@@@@@

0 추천
앱을 하나 만들고 있습니다..

 

다른건 잘되는데 문제는 database를 갱신하는 함수를 거친다음 화면을 바꾸지 않은 상태에서

 

listview의 database가 갱신되지 않는다는 것입니다..

 

보아하니 listview화면이 다시 돌아오거나 처음 켜질 때 data가 갱신됩니다..(oncreate가 실행될 때마다 data가 갱신된다는의미)

 

어떻게 해야 data를 화면을 바꾸지 않아도 즉시 갱신하게 할 수 있을까요?...?

 

구글 및 안드로이드 펍 질문 계속 검색하다가 없어서 올려요.. 아시는 분 꼭좀 답변 부탁드립니다.................!!!!!!!!!!!!!!
kmh1230 (640 포인트) 님이 2015년 2월 24일 질문

1개의 답변

+1 추천
 
채택된 답변

database를 갱신하는 함수를 거친다음

어뎁터.notifydatasetchanged() 해주심 되지않나요?

nicehee (73,100 포인트) 님이 2015년 2월 24일 답변
kmh1230님이 2015년 2월 24일 채택됨
문제는 db를 갱신하는 함수가 oncreate같은데 이게 화면 시작될 때 한번만 호출된다더군요.. 그리고 notifydatasetchanged()가 어디에 위치해야 할 지 모르겠습니다.. 다른 곳에서는 arraylist를 clear시킨다음 다시 add하라는데 맞는건지 모르겠어요..ㅜㅜㅜㅜ
갱신에 대해 올라오는 질문글 대부분이..onCreate부분에서만 db를 불러오기 때문에 앱을 재실행하거나, 해당 액티비티를 재실행해야 갱신된다는 글들입니다. 글쓴님도 그런 거같네요..갱신 원하는 지점에서 notifydatasetchanged해주세요..
저같은 경우엔 추가버튼을 누른 후에 notify해줬어요.
빠른답변감사합니다..
 저는 spinner에서 항목 선택할 때 notify를 해주고 싶어서 그렇게 했지만 되지 않는군요..
1. oncreate에 spinner.setonitemselectedlistener(this)를 입력
2. public void onitemselected선언 후 그 안에 어댑터.notifydatasetchanged();를 입력

이렇게 했는데 해결이 안되네요.. 다른곳을 수정해야할까요?
항목 선택한 즉시 notify를 해주면 안될거같은데요?
스피너에서 항목을 선택할 때 발생하는 이벤트라고 해봤자 해당 포지션에 무슨 값이 있는지만 알아오는거 뿐이니까요. 제가 kmh님 전체 코드는 모르지만 전체적인 흐름은 스피너항목선택->0번째선택함[해당값의 string변수명:사과]->이 변수명을 갖고 db작업[select/insert..]->조회(select)하거나 추가(insert)한 db를 새로 리스트뷰에 갱신한다.즉, db작업이 마무리 된 후에 notify를 해주셔야 할거같아요.
질문글 보니 다시 액티비티를 실행할 때 data가 갱신된다고 하셨으니, db작업에는 이상이 없는것 같고, 요녀석을 listview에 새로 뿌려줄 때 타이밍만 잡으시면 될거같네요
anci님 너무 감사합니다.
덕분에 해결하는데 실마리를 찾았습니다. 일주일정도 이것때문에 걱정많았는데
잘 해결되어 너무 기쁘고 감사드립니다...
정말 감사드립니다 .ㅜㅜ
...