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. 第二个片段是否定义了 ArrayAdapter?
4

4 回答 4

2

两者之间的唯一区别是您在第一个中声明了一个局部变量,但在第二个中没有。

以编程方式没有区别,但我个人认为第一个更容易阅读。

于 2012-08-06T07:01:45.057 回答
1

两个代码含义相同

唯一不同的是,代码 1 创建了一个单独的适配器对象(局部变量,您可以稍后重用它),而代码 2 将适配器直接设置为您的 ListView。

于 2012-08-06T07:00:55.327 回答
0

只差可读性和可维护性

首先是不同的更好,因为代码在需要重建时具有更高的可读性和可维护性;

于 2012-08-06T07:07:21.393 回答
0

1.第二个选项有一个额外";"的,所以删除它...

前:

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.如果您使用第二种方法,您没有创建局部变量,当您需要在代码中再次引用此 ArrayList 对象时,这将产生问题。

例如,如果你想做类似的事情,你将需要这个局部变量notifyDataSetChanged()

于 2012-08-06T07:07:46.680 回答