המדריך הזה יעניק לך חוויה מעשית בשימוש ב-Android Spinner כתפריט נפתח, בעבר עבור מידע באמצעות android bundle ובהצגת הודעת קופץ באמצעות android toast. ניצור אפליקציה לאנדרואיד הכוללת Spinner פשוט המאפשר בחירת פריט מתוך רשימה נפתחת. נציג מידע סטטי ב-Spinner. בחירת פריט מה-Spinner תציג הודעת toast. כדי להעביר מידע בצורת חבילה בין פעולות, נשתמש בכפתור כדי לבצע intent ולהציג את המידע שנשלח למסך הבא.
Android Spinner
Spinner ב-Android הוא סתם רשימה נפתחת כמו שנראית בשפות תכנות אחרות כמו בדפי HTML. ב-Android, Spinner משמש לבחירת ערך אחד מתוך סט של ערכים. במצב הברירת מחדל, Spinner מציג את הערך שנבחר כרגע. לחיצה על ה-Spinner מציגה תפריט נפתח עם כל הערכים הזמינים, ממנו המשתמש יכול לבחור אחד חדש. Spinner ב-Android מקושר ל-AdapterView
. לכן עלינו להגדיר את מחלקת המתאם עם ה-Spinner.
רשימת פריטים נפתחת של אנדרואיד
הקובץ XML הבא מציג את התצורה של ספינר טיפוסי באנדרואיד שמכיל תווית טקסט ותג אלמנט של ספינר.
<?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 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>
כאן נמצא קובץ ה-Manifest של אנדרואיד. 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) {
// מתודה מחולקת שנוצרה באופן אוטומטי
}
}
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. מהיר, קל ופשוט, האם לא? התמונות של היישום מוצגות למטה. אני מפעיל אותו על אחד מהמדמים. המסך הראשון מראה את תכני רשימת הנפילה כאשר ה-Spinner נפתח. לאחר בחירת פריט, הודעת התראה מתוצגת לזמן מה.
לאחר זמן מה, ההודעה משנה נעלמה כפי שמוצג בתמונה למטה. זה לא מונע מאיתנו ללחוץ על הכפתור הבא.
לבסוף, במסך השני, הפריט שנבחר מרשימת הנפילה מושך באמצעות חבילות ומוצג ב-TextView.
למטה תופעל הרצת מדגם של יישום ה-Spinner שלנו באמולטור.
זהו כל העניין לעכשיו, נבדוק Android ListView בפוסט הבא. ניתן להוריד את דוגמת הפרויקט לדוגמה של Android Spinner, Bundle, ו-Toast מהקישור למטה.
הורד דוגמת פרויקט ל-Android Spinner, Bundle ו־Toast
הפנייה: מסמך רשמי
Source:
https://www.digitalocean.com/community/tutorials/android-spinner-drop-down-list