Каковы различия между расширением Activity и расширением ListActivity?

Я использую класс, который расширяет Activity для получения списка из API...

В некоторых приложениях, которые делают в основном то же самое, разработчики расширили ListActivity...

Каковы различия?

Ответ 1

ListActivity расширяет функциональность общего android.app.Activity, предоставляя, если хотите, ряд функций, ориентированных на список. Например, обработка щелчка элемента списка четко содержится в ListActivity onListItemClick(...), тогда как если бы вы использовали простой android.app.Activity, вам нужно было бы реализовать это вручную с помощью OnClickListener и реализации.

В любом случае, если ваш макет содержит список, используйте ListActivity/ListFragment, поскольку он является полезным расширением. Это не значит, что весь экран должен быть списком, но часть его должна содержать виджет ListView с идентификатором, id="@android:id/list".

Javadoc в классе с полезными примерами его использования можно найти здесь.

Ответ 2

ListActivities специально разработаны для использования с ListViews. Он предоставляет несколько вспомогательных методов, таких как onListItemClick(), которые упрощают использование ListView в них.

Вы можете делать все, что вы можете сделать в Activity в ListActivity.

Если вы хотите изменить макет ListActivity, вы все еще можете использовать метод setContentView() из Activity. Пока существует ListView с именем @android: id/list где-то в вашем представлении ListActivity все равно будет работать.

Если вы все еще не уверены, всегда можете посмотреть исходный код ListActivity (код Jelly Bean, связанный с кодом ) и убедитесь, что он не делает ничего, кроме вашей жизни, немного легче.

Ответ 3

Расширяясь от ListActivity, вы соглашаетесь с контрактом, что в макете вашей деятельности будет доступен компонент ListView.

Ваш компонент ListView должен иметь идентификатор: @android:id/list

Класс ListView предоставляет удобные методы работы и управления ListView

Ответ 4

Кроме того, в обычном Activity вы можете использовать код ниже в onCreate, чтобы скрыть панель заголовка приложения. Кажется, что вы не можете сделать то же самое в ListActivity. (усвоил этот трудный путь)

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