Список 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, там Вы найдете много интересного видео, которое выходит достаточно часто. Приятного просмотра!
С уважением, авторы сайта Компьютерапия
Понравилось? Поделись этим видео с друзьями!
Создание списка ListView и ArrayAdapter в Android Studio
Рекомендуем смотреть видео в полноэкранном режиме, в настойках качества выбирайте 1080 HD, не забывайте подписываться на видео ВКонтакте, там Вы найдете много интересного, которое выходит достаточно часто. Приятного просмотра!
С уважением, авторы сайта Компьютерапия
Понравилось? Поделись этим видео с друзьями!
Создание списка ListView и ArrayAdapter в Android Studio
Рекомендуем смотреть видео в полноэкранном режиме, в настойках качества выбирайте 1080 HD, не забывайте подписываться на канал в Рутубе, там Вы найдете много интересного, которое выходит достаточно часто. Приятного просмотра!
С уважением, авторы сайта Компьютерапия
Понравилось? Поделись этим видео с друзьями!