본문 바로가기

EditText2

EditText에 자동으로 단위 콤마 넣기 NumberFormat 을 이용하면 숫자에 단위 콤마를 쉽게 찍을수 있다. 하지만 이를 EditText에 적용할려고 하면 한가지 문제가 생긴다. 입력할때마다 콤마가 찍혀야 하는데... addTextChangedListener에서 NumberFormat으로 콤마를 찍으면 당연히 텍스트가 변경되므로 다시 리스너가 호출된다. 즉, 호출이 무한 반복되면서 앱이 멈추게 된다. 그래서 살짝 꼼수를 부려봤다. EditText 밑에 같은 크기의 TextView를 깔고 여기에 콤마를 찍은 텍스트를 대신 써주고, 후에 EditText를 동기화 하는 것이다. 물론, EditText는 투명하게 설정해 안보이게 한다. 사실 임시 방편으로 만든것인데.. 생각보다 잘 작동해 계속 쓰고 있다 ㅎㅎㅎ 소스는 다음과 같다. 요즘 뜨고 .. 2019. 1. 17.
ListView에 EditText를 넣을때 반드시 살펴봐야 할점 설정 페이지를 만들때 ListView로 EditText를 넣고 싶은 유혹에 빠진다 하지만 ListView의 특성상 사실 EditText는 적합하지 않다. ListView는 각각의 row뷰를 재사용하여 메모리를 아끼기 때문에 EditText의 변경값을 일일이 저장해 두었다가 다시 불려줘야 한다. 그리고 이때 진짜 주의할게 하나 있다. 변경 리스너의 중복을 방지하는 것이다. 반드시 재사용 뷰의 예전 리스너를 지워줘야 한다. 안그러면 예전 목록들과 뒤죽박죽 되버린다. 이해를 돕기 위해 리스너를 지우지 않았을때와 지웠을때도 비교해 보았다. public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstan.. 2017. 9. 11.