ListActivity

Последнее обновление: 16.10.2021

Для упрощения доступа к элементам списка используется класс ListActivity. ListActivity представляет собой класс, унаследованный от Activity и разработанный специально для работы со списками.

Итак, посмотрим на примере. Во-первых, определим в файле разметки activity_main.xml элемент ListView:

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <ListView
        android:id="@android:id/list"
        android:layout_width="0dp"
        android:layout_height="0dp"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

</androidx.constraintlayout.widget.ConstraintLayout>

Обратите внимание на объявление идентификатора ListView: android:id="@android:id/list". Подобное объявление обязательно, чтобы ListActivity распознала список и могла бы им управлять.

Кроме ListView в файле разметки интерфейса также могут быть и другие элементы. Но в данном случае ограничимся только элементом ListView.

Далее изменим код класса MainActivity:

package com.example.listapp;

import android.app.ListActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Toast;

public class MainActivity extends ListActivity {

    String[] countries = { "Бразилия", "Аргентина", "Колумбия", "Чили", "Уругвай"};

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        // создаем адаптер
        ArrayAdapter<String> adapter = new ArrayAdapter(this,
                android.R.layout.simple_list_item_1, countries);
        setListAdapter(adapter);

        AdapterView.OnItemClickListener itemListener = new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View v, int position, long id) {

                Toast.makeText(getApplicationContext(), "Был выбран пункт " +
                        parent.getItemAtPosition(position).toString(),  Toast.LENGTH_SHORT).show();
            }
        };
        getListView().setOnItemClickListener(itemListener);
    }
}

Теперь класс MainActivity расширяет базовый класс ListActivity.

Здесь как и в случае с ListView мы создаем адаптер ArrayAdapter, только устанавливаем его через метод setListAdapter, который определен у ListActivity.

Далее создается объект слушателя OnItemClickListener, который будет обрабатывать выбор элементов списка. Его единственный метод onItemClick аналогичен тому, что разбирался в прошлом разделе, за тем исключением, что здесь мы выводим сообщение с текстом выбранного элемента.

В конце мы используем метод getListView(), который возвращает объект ListView. И затем устанавливаем для него вышеопределенный слушатель.

ListActivity в Android и Java
Помощь сайту
Юмани:
410011174743222
Перевод на карту
Номер карты:
4048415020898850