Этот учебник предоставит вам практический опыт использования Android Spinner в качестве раскрывающегося меню, передачи данных с использованием пакета Android и отображения всплывающего уведомления с использованием Android Toast. Мы создадим приложение для Android, которое состоит из простого спиннера, позволяющего выбирать элемент из выпадающего списка. Мы отобразим статические данные в спиннере. Выбор элемента из спиннера вызовет всплывающее уведомление. Для передачи данных в виде пакетов между действиями мы будем использовать кнопку для выполнения намерения и отображения переданных данных на следующем экране.
Android Spinner
Android Spinner – это просто выпадающий список, аналогичный тому, что видно в других языках программирования, таких как на HTML-страницах. В Android Spinner используется для выбора одного значения из набора значений. В состоянии по умолчанию спиннер показывает выбранное в данный момент значение. Касание спиннера отображает выпадающее меню со всеми доступными значениями, из которых пользователь может выбрать новое. Спиннер Android связан с AdapterView
. Поэтому нам нужно установить класс адаптера с Spinner.
Список Android Drop Down
Следующий xml-файл показывает макет типичного спиннера в Android, который состоит из текстовой метки и элемента спиннера.
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="https://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:padding="10dip"
android:layout_width="fill_parent"
android:layout_height="wrap_content">
<!-- Text Label -->
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginTop="10dip"
android:text="Category:"
android:layout_marginBottom="5dp"
/>
<!-- Spinner Element -->
<Spinner
android:id="@+id/spinner"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:prompt="@string/spinner_title"
/>
</LinearLayout>
Следующий фрагмент показывает, как использовать спиннер в классе активности.
Spinner spinner = (Spinner) findViewById(R.id.spinner);
Давайте разработаем приложение, где мы передаем выбранное значение из спиннера на следующий экран, используя пакеты, и в то же время отображаем всплывающее сообщение Toast с выбранным значением.
Пример структуры проекта Android Spinner
На изображении ниже показан проект Android Studio для примера спиннера. Давайте начнем с макета класса MainActivity. Нам просто нужно добавить кнопку в файл
basic_spinner.xml
.
<RelativeLayout xmlns:android="https://schemas.android.com/apk/res/android"
xmlns:tools="https://schemas.android.com/tools" android:layout_width="match_parent"
android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity">
<LinearLayout
android:orientation="vertical"
android:padding="10dip"
android:id="@+id/linear_layout"
android:layout_width="fill_parent"
android:layout_height="wrap_content">
<!-- Text Label -->
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginTop="10dip"
android:text="Category:"
android:layout_marginBottom="5dp"
/>
<!-- Spinner Element -->
<Spinner
android:id="@+id/spinner"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:prompt="@string/spinner_title"
/>
</LinearLayout>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="NEXT"
android:id="@+id/button"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
android:layout_marginBottom="137dp" />
</RelativeLayout>
Макет SecondActivity
выглядит следующим образом:
<RelativeLayout xmlns:android="https://schemas.android.com/apk/res/android"
xmlns:tools="https://schemas.android.com/tools" android:layout_width="match_parent"
android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceMedium"
android:text="Empty"
android:id="@+id/txt_bundle"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:layout_marginTop="103dp" />
</RelativeLayout>
Вот файл манифеста Android. AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="https://schemas.android.com/apk/res/android"
package="journaldev.com.spinners" >
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name=".MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".SecondActivity"/>
</application>
</manifest>
Классы java MainActivity
и SecondActivity
определены следующим образом.
package journaldev.com.spinners;
import android.app.Activity;
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.Spinner;
import android.widget.Toast;
import java.util.ArrayList;
import java.util.List;
public class MainActivity extends Activity implements AdapterView.OnItemSelectedListener {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// Элемент Spinner
final Spinner spinner = (Spinner) findViewById(R.id.spinner);
Button button=(Button)findViewById(R.id.button);
// Слушатель кликов на Spinner
spinner.setOnItemSelectedListener(this);
// Элементы выпадающего списка Spinner
List categories = new ArrayList();
categories.add("Item 1");
categories.add("Item 2");
categories.add("Item 3");
categories.add("Item 4");
categories.add("Item 5");
categories.add("Item 6");
// Создание адаптера для Spinner
ArrayAdapter dataAdapter = new ArrayAdapter(this, android.R.layout.simple_spinner_item, categories);
// Стиль макета выпадающего списка - список с радиокнопками
dataAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
// Присоединение адаптера данных к Spinner
spinner.setAdapter(dataAdapter);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent= new Intent(MainActivity.this,SecondActivity.class);
intent.putExtra("data",String.valueOf(spinner.getSelectedItem()));
startActivity(intent);
}
});
}
@Override
public void onItemSelected(AdapterView > parent, View view, int position, long id) {
// При выборе элемента Spinner
String item = parent.getItemAtPosition(position).toString();
// Показ выбранного элемента Spinner
Toast.makeText(parent.getContext(), "Selected: " + item, Toast.LENGTH_LONG).show();
}
public void onNothingSelected(AdapterView > arg0) {
// TODO Автоматически сгенерированный метод-заглушка
}
}
package journaldev.com.spinners;
import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;
public class SecondActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.second_activity);
TextView textView=(TextView) findViewById(R.id.txt_bundle);
Bundle bundle=getIntent().getExtras();
String data=bundle.get("data").toString();
textView.setText(data);
}
}
В приведенном выше коде мы отображаем всплывающее уведомление при выборе элемента из выпадающего меню спиннера. При нажатии кнопки мы передаем выбранный элемент спиннера в виде строки в следующую активность, используя пакет Android. Затем данные извлекаются из пакета и отображаются в TextView. Быстро, легко и просто, не так ли? Снимки экрана приложения показаны ниже. Я запускаю его на одном из эмуляторов. Первый экран показывает содержимое списка, когда открывается спиннер. После выбора элемента всплывает всплывающее уведомление.
Через некоторое время уведомление исчезает, как показано на изображении ниже. Это не мешает нам нажимать кнопку Далее.
Наконец, на втором экране выбранный элемент из выпадающего списка извлекается с помощью пакетов и отображается в TextView.
Ниже приведен пример запуска нашего примера приложения для спиннера Android в эмуляторе.
Это все на данный момент, мы рассмотрим Android ListView в следующем сообщении. Вы можете загрузить пример проекта Android Spinner, Bundle и Toast по ссылке ниже.
Скачать Пример Проекта Android Spinner, Bundle и Toast
Ссылка: Официальная Документация
Source:
https://www.digitalocean.com/community/tutorials/android-spinner-drop-down-list