0

次の例で View クラスの変数を配置するのに最適な場所は 2 つあります。このandroidアプリのコードでは、Activityを拡張するクラスのグローバル変数として配置した方が良いですか、それともBaseAdapterを拡張したImageAdapterというネストした内部クラスの中で変数を宣言した方が良いでしょうか?

どちらが良いですか?

コードの 2 つのサンプルを以下に示します。

最初のサンプルでは、​​View クラスのビュー変数がよりグローバルなスコープとして宣言されています。ここに示すように、メイン クラスに表示されます。

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;
        }

この 2 番目の例では、View ビューは 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;
        }

     

4

1 に答える 1

0

viewメンバー フィールドを作成する理由はありません。その使用はメソッドに対してローカルであるため、メソッドのローカル変数にします。

実際、この用途では、クラス内の他のコードにビューを公開したくないことは間違いありません。フレームワーク ( を呼び出すgetView) に返され、コードによってそのまま残されることになっています。から返されたビューに帯域外の変更をうっかり加えた場合getView、動作は予測不能になります。

于 2012-12-07T06:16:45.870 に答える