2012-12-07 55 views
0

這兩個選擇中,哪個放置View類的變量的最佳位置在下面的示例中?在這個android應用程序代碼中,最好是將它作爲擴展活動的類的全局變量放置,還是更好地聲明擴展BaseAdapter的稱爲ImageAdapter的嵌套內部類中的變量?哪個地方爲嵌套的內部類放置變量,android

哪個更好?

2個樣本代碼如下所示。

在第一個示例中,View類的視圖變量在範圍中聲明爲更全局。如這裏所示,它出現在Main類中。

public class Main extends Activity { 
    View view; // <--- PLACEMENT IN A MORE GLOBAL POSITION 
    Cursor imageCursor; 

public class ImageAdapter extends BaseAdapter { 

    private Context context; 

    @Override 
    public View getView(int position, View convertView, ViewGroup parent) { 

     if(convertView == null){ 
      LayoutInflater inflater = (LayoutInflater) context.getSystemService(context.LAYOUT_INFLATER_SERVICE); 
      view = inflater.inflate(R.layout.adapterview, null); 
     }else{ 
      view = convertView; 
     } 

在這第二個例子中視圖視圖被聲明爲ImageAdapter類的局部變量,在該類的getView方法內部。

public class Main extends Activity { 
Cursor imageCursor; 

public class ImageAdapter extends BaseAdapter { 

    private Context context; 

    @Override 
    public View getView(int position, View convertView, ViewGroup parent) { 
     View view; // <--- PLACEMENT AS LOCAL VARIABLE 
     if(convertView == null){ 
      LayoutInflater inflater = (LayoutInflater) context.getSystemService(context.LAYOUT_INFLATER_SERVICE); 
      view = inflater.inflate(R.layout.adapterview, null); 
     }else{ 
      view = convertView; 
     } 

回答

0

沒有理由做出view成員字段。它對方法來說是本地的,所以把它作爲方法的局部變量。

實際上,對於這種用法,您絕對不希望將視圖暴露給您班級中的其他代碼。它應該返回到框架(即調用getView),然後由您的代碼單獨留下。如果您無意中對從getView返回的視圖進行了帶外更改,則該行爲將不可預知。

+0

是的,這是有道理的,所以我認爲在任何情況下都儘可能地限制範圍。只允許爲該變量所需的範圍。 – Kevik

+0

@Kevik - 是的,這是一個很好的啓發式。 –