【问题标题】:What are the differences between extending Activity and extending ListActivity?扩展Activity和扩展ListActivity有什么区别?
【发布时间】:2012-08-11 18:04:36
【问题描述】:

我正在使用一个扩展 Activity 的类来从 API 获取列表...

在一些基本相同的应用中,开发者扩展了 ListActivity...

有什么区别?

【问题讨论】:

    标签: android android-activity listactivity extend


    【解决方案1】:

    另外,在常规的Activity 中,您可以使用onCreate 中的以下代码来隐藏应用标题栏。看来你不能在ListActivity 中做同样的事情。 (学到了很多东西)

    requestWindowFeature(Window.FEATURE_NO_TITLE);
    setContentView(R.layout.activity_list);
    // The rest of the content of onCreate
    

    【讨论】:

      【解决方案2】:

      ListActivity 扩展,您同意在您的活动布局中使用ListView 组件的合同。

      您的 ListView 组件的 id 应为:@android:id/list

      ListView 类为工作和操作 ListView 提供了方便的方法

      【讨论】:

        【解决方案3】:

        ListActivity 扩展了常见的android.app.Activity 的功能,如果您愿意,可以“免费”提供一些以列表为中心的功能。例如,列表条目点击的处理巧妙地包含在 ListActivity 的 onListItemClick(...) 中,而如果您使用的是普通的 android.app.Activity,那么您需要使用 OnClickListener 和实现手动实现这一点。

        总的来说,如果您的布局包含一个列表,那么请使用 ListActivity/ListFragment,因为它是一个有用的扩展。这并不意味着您的整个屏幕布局必须是列表,而是它的一部分必须托管一个带有标识符 id="@android:id/list" 的 ListView 小部件。

        可以在here找到该类的Javadoc以及如何使用它的有用示例。

        【讨论】:

        • 哦哦。多个答案都说同样的话!把它交给弱者! :)
        • 本质上它们是一样的,但是 ListActivity 有一些有用的帮助方法,可能已经被 Android 团队高效地实现了,因此它们正在发挥最大的能力。与性能和列表更相关的项目是管理您的光标,而不是做一些愚蠢的事情,例如检索列表中的所有项目仅使用前 10 个等。
        【解决方案4】:

        ListActivities 是专门为与 ListView 一起使用而设计的。它提供了几个帮助方法,例如onListItemClick(),这使得在其中使用 ListView 变得更加容易。

        您可以在 ListActivity 的 Activity 中做任何可以做的事情。

        如果您想更改 ListActivity 的布局,您仍然可以使用 Activity 中的 setContentView() 方法。只要您的 View 中某处有一个名为 @android:id/list 的 ListView,ListActivity 仍然可以工作。

        如果您仍然不确定,您可以随时查看 ListActivity 的源代码(链接到的 Jelly Bean 代码),看看它除了让您的生活更轻松之外并没有做太多其他事情。

        【讨论】: