Список ListView в Android Studio, с помощью ArrayAdapter позволяет отображать информацию из массивов в мобильном приложении.

Новый проект "My ListView"

В Android Studio создадим новый проект, назовем его "My ListView", тип активности Empty, Layout Name - main.  В maim.xlm добавим RelativeLayout , и переместим в него TextView. Для TextView очистим значение android:text, и присвоим android:id="@+id/txt". Ниже расположим ListView с android:id="@+id/lv". Временно введем в TextView какой-нибудь текст, что бы установить его выше ListView.

Массив в strings.xml

Создадим строковый массив в файле strings.xml, с названием day_of_weeks, а в его значения занесем дни недели:

<string-array name="day_of_weeks">
	<item>Понедельник</item>
	<item>Вторник</item>
	<item>Среда</item>
	<item>Четверг</item>
	<item>Пятница</item>
	<item>Суббота</item>
	<item>Воскресенье</item>
</string-array>

После сохраним и закроем strings.xml.

Способ первый

Перейдем в MainActivity.java, и определим ListView в переменную lvMain:

ListView lvMain = (ListView)findViewById(R.id.lv).

Объявим в переменную txt наш TextView:

final TextView txt = (TextView)findViewById(R.id.txt);

Создадим ArrayAdapter для связи массива day_of_weeks с ListView:

ArrayAdapter<CharSequence>  adapter = ArrayAdapter.crewateFromResource(this, R.array.day_of_weeks, android.R.layout.simple_List_item1);

Свяжем listView с адаптером:

lvMain.setAdapter(adapter);

Запустим приложение в эмуляторе. ListView отображает содержимое массива(дни недели) построчно.

Способ второй.

Также массив можно указать и в файле MainActivity, рассмотрим этот вариант.

Выше функции onCreate объявим строковый массив day_of_weeks:

 String[] day_of_weeks = {"Понедельник", "Вторник", "Среда", "Четверг", "Пятница", "Суббота", "Воскресенье" };

а в файле strings.xml, для чистоты эксперимента, удалим созданный ранее day_of_weeks.

Изменим код ArrayAdapter на следующий:

ArrayAdapter<String>adapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1, day_of_weeks);

Снова запустим приложение в эмуляторе, код работает аналогично предыдущему.

Событие onItemClick - нажатия на пункт списка

Напишем обработчик нажатия на пункт элемента ListView, что бы TextView показывал текст нажатого пункта:

lvMain.setOnItemClickListener(new AdapterView.OnItemClickListener() {
    @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {

        txt.setText(day_of_weeks[position]);

               

        }

  });

Функция setOnItemClickListener элемента lvMain при событии onItemClick передает в txt с помощью функции setText значение массива day_of_weeks по его позиции.

При запуске в эмуляторе Android по нажатию на список в надписи отображается название нажатого пункта.

Полный текст main.xml

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout
 xmlns:android="http://schemas.android.com/apk/res/android"
 xmlns:app="http://schemas.android.com/apk/res-auto"
 xmlns:tools="http://schemas.android.com/tools"
 android:layout_width="match_parent"
 android:layout_height="match_parent"
 tools:context="ru.maxfad.mylistview.MainActivity">

    <RelativeLayout
        android:layout_width="368dp"
        android:layout_height="495dp"
        tools:layout_editor_absoluteY="8dp"
        tools:layout_editor_absoluteX="8dp">

        <TextView
            android:id="@+id/txt"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text=""
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintLeft_toLeftOf="parent"
            app:layout_constraintRight_toRightOf="parent"
            app:layout_constraintTop_toTopOf="parent" />

        <ListView
            android:id="@+id/lv"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_below="@+id/txt" />

    </RelativeLayout>
</android.support.constraint.ConstraintLayout>

Полный текст MainActivity.java

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity {

    String[] day_of_weeks = {"Понедельник", "Вторник", "Среда", "Четверг", "Пятница", "Суббота",
            "Воскресенье" };


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




        ListView lvMain = (ListView)findViewById(R.id.lv);
        final TextView txt = (TextView)findViewById(R.id.txt);

        ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
                android.R.layout.simple_list_item_1,day_of_weeks);

        lvMain.setAdapter(adapter);

        lvMain.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                txt.setText(day_of_weeks[position]);
                
            }
        });


    }
}

В этом видео показано как создать список ListView и использовать ArrayAdapter в Android Studio:

Рекомендуем смотреть видео в полноэкранном режиме, в настойках качества выбирайте 1080 HD, не забывайте подписываться на канал в YouTube, там Вы найдете много интересного видео, которое выходит достаточно часто. Приятного просмотра!

 С уважением, авторы сайта Компьютерапия


Понравилась статья? Поделитесь ею с друзьями и напишите отзыв в комментариях!


Новые статьи


Cookies make it easier for us to provide you with our services. With the usage of our services you permit us to use cookies.
Ok