0

現在、私はsetListAdapterを研究しており、以下の2つのコードスニペットに出くわしました。

スニペット1:

ArrayAdapter<String> adapter =
    new ArrayAdapter<String>(this, R.layout.layout_nm, R.id.layout_idnm, items);
setListAdapter(adapter);

スニペット2:

setListAdapter(new ArrayAdapter<String>(this, R.layout.layout_nm, R.id.layout_idnm, items););   

私の質問は:

  1. 両方のスニペットは同じ意味を持っていますか?
  2. 2番目のスニペットはArrayAdapterを定義していますか?
4

4 に答える 4

2

この 2 つの唯一の違いは、最初のローカル変数では宣言されているが、2 番目の変数では宣言されていないことです。

プログラム的には違いはありませんが、個人的には最初の方が読みやすいと思います。

于 2012-08-06T07:01:45.057 に答える
1

どちらのコードも同じ意味です。

唯一の違いは、コード 1 が個別のアダプター オブジェクト (ローカル変数であり、後で再利用できます) を作成し、コード 2 がアダプターを ListView に直接設定していることです。

于 2012-08-06T07:00:55.327 に答える
0

読みやすさと保守性の違いのみ

1つ目は、再構築が必要なときにコードの可読性と保守性が向上するため、異なり、より優れています。

于 2012-08-06T07:07:21.393 に答える
0

1. 2番目のオプションに余分なものがある";"ので、それを削除します...

前:

setListAdapter(new ArrayAdapter<String>(this, R.layout.layout_nm, R.id.layout_idnm, items););

後:

setListAdapter(new ArrayAdapter<String>(this, R.layout.layout_nm, R.id.layout_idnm, items));

2.ローカル変数を作成していない2番目のアプローチを使用している場合、コードでこのArrayListオブジェクトを再度参照する必要があるときに問題が発生します。

たとえば、次のようなことをしたい場合は、このローカル変数が必要になりますnotifyDataSetChanged()

于 2012-08-06T07:07:46.680 に答える