기본 콘텐츠로 건너뛰기

글

12월, 2011의 게시물 표시

JSONObject 전용 CustomView Adapter를 만들었다.

질보다 양이 우선하는 허접안드로이드 프로그램 의뢰를 처리해주고 있다. 어찌나 기능들이 다양한지 덕분에 스터디는 제대로 하네 ㅎㅎ 하다보니 리스트들이 엄청 많은데 SimpleAdapter 로 대충 하려고 했더니 요리조리 잘도 빠져들 나가서 커스텀 시리즈를 하나씩 종류별로 다 만들고 있다. SimpleAdapter를 선호하는 편인데 Hash Map 에만 넣어주면 이미지건 뭐건 알아서 잘 해주니까 좋다. myAdapter = new SimpleAdapter(this, groupData, R.layout.couponlist, new String[] { "title", "desc" }, new int[] { R.id.textViewListTitle, R.id.textViewListDesc }); mListView.setAdapter(myAdapter); 대략 이런식. 1.context 를 주고, 2.Map의 ArrayList 형을 받고, 3.리스트를 표현할 Layout을 정하고 4.리스트에 값을 가져올 Map의 키와 5. 그 키값에 대응하는 List안의 View들을 대응 이것만으로 오케이 물론 이것마저도 사실 지저분하고 더러운 코드로 보이지만 자바에선 이정도면 짧은 코드인편 그런데 이걸 Custom으로 구현하면 갑자기 일이 커진다. http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/List4.html 나는 짜증나서 이짓 못하겠다. 일단 서버나 array.xml 등등에서 JSON을 다루는 일이 대부분이라서 SQLite DatabaseAdapter (어라 이것도 만들었네)에서도 그냥 죄다 키발키발(key:val)해버렸다. 하나 만들고 리팩토링하면서 생각해봐야지 하고 촥 만들고 보니 Custom ListAdapter라고 해봤자. 결국 getView 만...

왜 object에 prototype을 쓰지 않나?

http://triin.net/2009/09/13/Why_exactly_is_Object.prototype_verboten 이유는 이렇다. prototype 에 method 를 정의하면 자기 자신도 해당 object 에 카운트가 된다. 무슨말이냐? object (array포함) 의 key와 value를 보기 위해 종종 아래와 같이 해본다. var ages = {  John: 10,  Mary: 28,  Alice: 16}; 일때 (function(obj){ for (idx in obj) { console.log(idx+':'+obj[idx]) }})(ages)  이렇게 떠 보면 John:30 Mary:30 Alice:30 뭐 이렇게 나오겠지. 그럼 아예 object 에 이걸 prototype 해서 그냥 method 로 만들지 싶어 Object.prototype.printObject=function(){ for (idx in this) { console.log(idx+':'+this[idx]) }}; 요따우로 해주면 ages.printObject() > John:10 > Mary:20 > Alice:30 > printObject:function (){ for (idx in this) { console.log(idx+':'+this[idx]) }} 망한다. 다시 이야기 하지만 자기 자신도 객체의 일부가 되니까. 그래서 쓰지말라는 것이다. hasOwnProperty를 사용해서 피해가는 방법도 있겠지만 다른 문제가 있다. 자세한 설명은 생략한다. 왜 그런지 알고 싶으면 본문 봐라. (난 알고싶지 않아서 안봤다. 안쓸거니까 우왕ㅋ) 결론은 이거다. defineProperty 를 사용하자. ECMAScript 5 스펙이다. 하지만 망할 IE7 에선 안되겠지 http:/...