全域變數顧名思義就是在整個的類別中或可在多個函數中呼叫的變數。也稱為外部變數。局部變數則是特定過程或函數中可以存取的變數。宣告一個變數是很 容易的,但是講到使用的時候,卻不是想像的那麼簡單。至於本人則是經常定義全域變數使用,但也就是因為這樣,定義的是全域變數。也饒了不少的彎子。
在使用Adapter即適配器的時候,通常適配器總是與listView使用,因為一個listView 基本上都會有一個listView的Item的佈局,下面的情景是:在每個Item裡面都會有一個ImageView,當我點擊某一條的時候,則需要為該Item的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的話更好了。