본문 바로가기

Android/View

안드로이드/Android View의 바코드 setTag(), getTag() 기능을 이용 하자 ~!


 < 개발 환경 >  
   작성일 : 2013.02.03
   OS 설치 버전 : Windows7 32bit  
   SDK 설치 버전 : 안드로이드 SDK 4.2 (젤리빈) / API LEVEL : 17  
   ADT 설치 버전 : 21   
   Java 설치 버전 : JDK 1.6.0_20 / JRE6 
   이클립스 설치 버전 : Indigo
   테스트단말 : 삼성 갤럭시 S2 4.0.4 (아이스크램 샌드위치)   

 < 프로젝트 적용 > 
   Android Build Target / API LEVEL / Complie With : 17  
   minSdkVersion : 8 
   targetSdkVersion : 16  
   Java Compiler Level : 1.6  
   Text file encoding : UTF-8







안드로이드/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




파일첨부 : 

TestViewSetTagGetTag.zip