Список 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, там Вы найдете много интересного видео, которое выходит достаточно часто. Приятного просмотра!

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




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

Новые статьи

We use cookies on our website. Some of them are essential for the operation of the site, while others help us to improve this site and the user experience (tracking cookies). You can decide for yourself whether you want to allow cookies or not. Please note that if you reject them, you may not be able to use all the functionalities of the site.

Ok