使用findViewById时,ListViews和其他视图有什么区别?

时间:2014-12-07 15:47:25

标签: android android-layout android-activity

在Android中查找大多数视图时,通常可以使用findViewById(R.id.my_id),其中ID在XML文件中看起来像android:id="@+id/my_id"

使用任何类型的ListView时,我们必须使用findViewById(android.R.id.my_id),而在XML中我们使用android:id="@android:id/my_id"

有人可以向我解释为什么会这样,为什么会有所作为?

谢谢!

2 个答案:

答案 0 :(得分:2)

  

当使用任何类型的ListView时,我们必须使用findViewById(android.R.id.my_id),在XML中我们使用android:id =“@ android:id / my_id”。

不,你没有。事实上,你最有可能不会编译。

如果您继承自ListActivityListFragment等类,则需要使用框架定义的@android:id/list这些类将管理的android.R.id.list的/ ListView标识符。这样ListActivityListFragment可以找到您希望它为您管理的ListView

在任何其他情况下,欢迎您将ListView命名为任何您喜欢的名称,就像任何其他小部件或容器一样。

答案 1 :(得分:0)

在自定义视图中,您通常会定义自己的ID @+id/your_own_id。库中的元素使用相同的表示法。但是,SDK中的元素使用android前缀。

如果您在布局中加入ListView,则通常会为其指定标准ID @android:id/list。某些SDK类需要标准ID。例如,如果您有ListFragment的自定义布局,则布局必须包含带有标准ID的ListView元素。