2012-08-06 29 views
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?
+2

耶相同的,你会需要这个局部变量。但第一个是一个很好的做法。因为你可以重新使用适配器而不再创建它 – 2012-08-06 07:00:54

+1

另外这与android无关,它是一个通用编程问题。 – JoxTraex 2012-08-06 07:04:00

+0

thx&对不起,我只学习C编程,甚至没有C++或Java。 现在只开始自学java。 这段代码是我正在做的d android项目的一部分。 – kin 2012-08-06 07:54:37

回答

0

有一个在第二选择一个额外的";",因此将其删除...

前:

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()

1

这两个代码都有相同的含义

只有一个区别是,代码1是创建一个单独的适配器对象(局部变量,以后可以再次使用它)和代码2直接设置适配器将您的ListView。

+2

它不创建单独的适配器对象。创建完全相同数量的适配器对象;第一个示例给出了第二个不适用的适配器的名称。 – Iain 2012-08-06 07:04:16

+0

@lain FYI Code 1将通过创建对象来占用内存。 – 2012-08-06 07:05:03

+0

Yaa ... @ PareshMayani是真的......基本的OOP概念。 – 2012-08-06 07:06:34

2

两者之间的唯一区别是,你声明中的第一个局部变量,但不是在第二位。

编程方式没什么区别,但我个人认为首先是更容易阅读。

0

唯一不同的可读性和可维护性

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

相关问题