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

editText 저장 타이밍..

0 추천
리스트뷰에 여러 editText가 있습니다.. 포지션값으로 구별을 해야하는데..

따로 저장버튼이 없어서 editText들에 저장한 값을 어떠한 타이밍에 저장을 해야 할지 모르겠습니다..

제가 생각하기엔 afterTextChanged 때 텍스트 값이 변화된 후를 감지해서 getText().toString() 한후,

이 string값을 저장하려고 하는데... 저장이 되질 않네요.

버튼이면 클릭이벤트쪽에 구현하면 되는데..ㅠㅠ 혹시 이렇게 값 저장해보신 분 없으신가요?
 

+

그리고 한개의 값만 저장하는게 아니라, 30개 정도의 값을 저장하는데...

sharedpreference로 저장할 때,  key값/value값 이렇게 저장하는데,

key값으론 position값인 int값으로 해서 구별해야 할까요?
anci (19,950 포인트) 님이 2015년 1월 22일 질문

1개의 답변

+1 추천
 
채택된 답변
onPause에 저장하면 되지않을까요

홈버튼을 누른다거나 뒤로 가게되면 항상 호출되는 메서드이니

그리고 전역으로 ArrayList<String> 변수를 하나 가지고있구요.

거기에다 저장을하고 불러오고를 하세요.

즉, getView에서 editText.addTextChangeListener를 붙이구요, position값에 해당하는 String을 ArrayList에 저장을 합니다.

onPause에서 ArrayList를 루프문돌리면서 SharedPreference에 저장하면되겠죠.

key값은 int, value값은 String값 넣으면되겟네요
기초개발자 (24,060 포인트) 님이 2015년 1월 22일 답변
anci님이 2015년 1월 22일 채택됨
답변감사합니다. 사실 onstop이나, onpause에도 해볼까 했는데요..
뒤로 가거나 다른 메뉴로 이동했을 때 저장하는 방법도 생각했지만,
현재 페이지에 라디오버튼/에디트텍스트 이렇게 두개가 짝을 이루어 30개로 나열되어있습니다[커스텀 리스트뷰로]
그리고 하단에 전송버튼을 누르면 현재 체크되어 있는 라디오버튼과 동일한 포지션에 위치한 에디트텍스트의 값을 getText해서 그걸 전송해야 하는데요..
onpause에서 저장하면, 실시간 저장(?)이 안되는게 아닌지요..?
현재 라디오값은 정상적으로 제 포지션을 잘 받아오는데, 에디트텍스트도 포지션이 스크롤을내리면 꼬여버려서..문제네요 ㅎㅎ;;
일단 해결책이 없어서 저장버튼 만들어서 저장하기로 햇습니다 ㅠ
그러니깐 addTextChangeListener를 달아서 저장을 하면 되지요.
즉 텍스트가 변경될때마다 전역변수인 ArrayList에 position값에 업데이트를 해줍니다.
그리고 getView내부에선 editText.setText(arraylist.get(position))으로 전역변수의 값을 가져오도록 하는거죠.
그럼 스크롤을 내려도 포지션이 꼬이지가 않습니다.

그리고 전송버튼을 누르면 editText에 getText를 하는게아니라 전역변수의 arrayList.get(position)을 해서 string값을 가져와서 보내는거죠.
리스트뷰 내에서 string값을 관리하는게아니라, 전역변수로 관리하고 getView내부에선 전역변수의 값을 set만 하는걸로해야 꼬이지가않습니다
...