< 개발 환경 > < 프로젝트 적용 > |
안드로이드/Android View의 바코드 setTag(), getTag() 기능을 이용 하자 ~!
우리가 마트에서 장을 본 후 물건을 계산할 때 포스기로 물건의 바코드를 찍어서 가격을 계산하게 되는데요. View에게도 바코드처럼 특별한 ID를 부여 할 수 있습니다. 바로 setTag(), getTag()를 이용해서 말이죠. 말 그래도 View에게 Tag를 달아 식별할 수 있게 만들어 주는 방법 입니다. 만약 View를 컨트롤 해야 하거나 ListView의 getView() 등에서 사용하시면 View의 index가 꼬이지 않고 작업을 할 수 있습니다.
setTag(Object object)를 매개변수로 받기 때문에, 클래스를 넣어 주신 후 사용하실 때 getTag()를 이용하여 형변환 해서 사용해 주시면 됩니다. Apdater의 getView() 에서 역시 View에 Holder 클래스를 만든 후 setTag(), getTag()를 이용하여 View가 매번 findViewByID를 하지 않고 저장해 놓음으로써 getView의 속도를 높여 주는 Holder 패턴이 많이 사용되고 있습니다.
자 그럼 예제를 살펴 보겠습니다.
package arabiannight.tistory.com.viewsettaggettag; import android.app.Activity; import android.os.Bundle; import android.util.Log; import android.view.View; public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // View 생성 View view = new View(this); // Strng, Integer 등을 활용하여 index 기능처럼 View를 // 컨트롤 할 수 있다 Integer index = 1; view.setTag(index); Integer gIndex = (Integer) view.getTag(); Log.d("TAG_TEST", "Tag index = " + gIndex); // Class를 만들어 View를 식별할 수 있는 간단한 Tag 정보를 // 추가할 수 있다 AppInfo info = new AppInfo(); view.setTag(info); AppInfo gInfo = (AppInfo) view.getTag(); Log.d("TAG_TEST", "AppInfo number = " + gInfo.number + "\n" + "AppInfo name = " + gInfo.name); } class AppInfo { public int number = 1; public String name = "view_01"; } }
02-03 23:32:03.233: D/TAG_TEST(9655): Tag index = 1 02-03 23:32:03.233: D/TAG_TEST(9655): AppInfo number = 1 02-03 23:32:03.233: D/TAG_TEST(9655): AppInfo name = view_01
파일첨부 :
'Android > View' 카테고리의 다른 글
안드로이드/Android HorizontalScrollView 란? (1) | 2013.02.04 |
---|---|
안드로이드/Android 현재 포커스(Focus)를 가진 View 알아 내기 ~! (0) | 2013.02.03 |
안드로이드/Android 안드로이드 뷰 시스템의 대략적인 개념 (1) | 2013.02.02 |
안드로이드/Android LayoutInflater 사용 방법 ~! (7) | 2013.02.01 |
안드로이드/Android 꼭 알아야 할 View의 필수 암기 메서드 ~! (1) | 2013.01.31 |