전역 변수는 이름에서 알 수 있듯이 전체 클래스 또는 여러 함수에서 호출할 수 있는 변수입니다. 외부 변수라고도 합니다. 지역 변수는 특정 프로시저나 함수 내에서 액세스할 수 있는 변수입니다. 변수를 선언하는 것은 매우 쉽지만, 사용에 있어서는 생각만큼 간단하지 않습니다. 저는 전역변수를 정의해서 사용하는 경우가 많은데, 그렇기 때문에 전역변수를 정의하게 됩니다. 우여곡절도 많이 면했습니다.
Adapter를 사용할 때 일반적으로 어댑터는 항상 listView와 함께 사용됩니다. listView에는 기본적으로 listView Item 레이아웃이 있기 때문입니다. 다음 시나리오는 다음과 같습니다. 각 항목의 ImageView가 됩니다. 특정 항목을 클릭하면 해당 항목의 ImageView 배경색을 변경하거나 다른 배경 이미지로 변경해야 하는 경우가 있습니다. 첫 번째 항목을 클릭하면 세 번째 또는 두 번째 항목의 그림도 변경된 것을 확인할 수 있습니다. 이는 전역 변수를 정의하기 때문입니다. 코드 부분은 다음과 같습니다.
public class Adapter extends BaseAdapter { private ImageView img; public View getView(int position, View convertView, ViewGroup parent) { convertView = mInflater.inflate(R.layout.group_listview_item,null); img = (ImageView) convertView.findViewById(R.id.logo); return convertView; } }
위 부분에서 ImageView는 전역 변수입니다. 이때 ImageView를 지역변수로 정의해야 하는데,
public class Adapter extends BaseAdapter { public View getView(int position, View convertView, ViewGroup parent) { convertView = mInflater.inflate(R.layout.group_listview_item,null); ImageView img = (ImageView) convertView.findViewById(R.id.logo); return convertView; } }
이때 각 Item의 ImageView를 나타냅니다. 또 다른 상황은 장바구니를 만들 때 더하기 또는 빼기 아이콘을 클릭하여 장바구니에 담긴 항목 수를 변경할 수 있다는 것입니다. 수량 num을 정의할 때 지역 변수로도 정의해야 합니다. ViewHolder를 사용하시면 더 좋을 것 같습니다.