Spinner trong Android khá là giống với Combo Box trên web đó là giao diện dạng “Drop Down List” giúp người dùng lựa chọn một “Item” trong danh sách có sẵn
Để làm rõ thành phần này để các bạn hoc android hiểu rõ thì trong ví dụ này mình sẽ làm một ứng dụng với kịch bản như sau: Giao diện của ứng dụng gồm 2 Spinner và 1 Button. Khi bạn thay đổi giá trị của Spinner thì sẽ Toast lên giá trị mới đó. Khi bạn click vào Button mình sẽ hiển thị giá trị đang được chọn của 2 Spinner qua LogCat.
Để làm được ví dụ này các bạn thực hiện lần lượt các bước sau:

Bước 1: Mở file res-> values  ->strings.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">SpinnerDemo</string>
<string name="action_settings">Settings</string>
<string name="hello_world">Hello world!</string>
<string name="prompt">Choose Country</string>
<string name="cp">Choose time</string>
<string name="GetValueSpinner">Lay gia tri Item Spinner</string>
<string name="getValueSelected">getValueSelected</string>
<string-array name="MyArray">
<item>value1</item>
<item>value2</item>
</string-array>
<string-array name="AAAAAAAAAAAAA">
<item>aaa1</item>
<item>aaa1</item>
<item>aaa1</item>
</string-array>
</resources>

Bước 2: tạo file res-> values ->array.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
<string-array name="CountryName">
<item>Viet Nam</item>
<item>EngLand</item>
<item>France</item>
<item>USA</item>
</string-array>
<string-array name="CountryName12423">
<item>Nam</item>
<item>Nu</item>
<item>13134234</item>
<item>35245346</item>
</string-array>
<string-array name="Char">
<item>A</item>
<item>B</item>
<item>C</item>
<item>D</item>
</string-array>
</resources>

Bước 3: Mở file res-> layout ->activity_main.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:paddingLeft="10dp"
android:paddingRight="10dp"
tools:context=".MainActivity" >

<Spinner
android:id="@+id/spDemo1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginTop="50dp"
android:entries="@array/Char"
android:prompt="@string/prompt" />

<Spinner
android:id="@+id/spDemo2"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginTop="5dp"
android:prompt="@string/cp" />

<Button
android:id="@+id/btGetSelectedSpinner"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/GetValueSpinner"
android:onClick="@string/getValueSelected"
android:layout_marginTop="5dp" />
</LinearLayout>

Bước 4: mở file MainActivity.java

package com.example.spinnerdemo;
import java.util.ArrayList;
import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.util.Log;
import android.view.Menu;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemSelectedListener;
import android.widget.ArrayAdapter;
import android.widget.Spinner;
import android.widget.Toast;
public class MainActivity extends Activity {

// cach 1 dung entries
// buoc 1 xay dung file array.xml -> xay dung mang String
// buoc 2 xay dung layout trong spinner khai bao 2 thuoc tinh entries,prompt
// buoc 3 khai bao doi tuong spinner trong code va link den layout
// buoc 4 bat su kien chon item setOnItemSelectedListener

private Spinner spDemo1;
private Spinner spDemo2;
private ArrayList<String> array = new ArrayList<String>();
private ArrayAdapter<String> adapter;

// private ArrayAdapter<String> adapter1;

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

// lay mang tu
final String[] arr;
arr = MainActivity.this.getResources().getStringArray(R.array.Char);

spDemo1 = (Spinner) findViewById(R.id.spDemo1);

// bat su kien khi co 1 item cua spinner duoc chon
spDemo1.setOnItemSelectedListener(new OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view,
int position, long id) {
// TODO Auto-generated method stub
String str = parent.getItemAtPosition(position).toString();
String str1 = arr[position];
// khac voi trong java cac ban co the ghi log ra console thi trong android cac ban co the ghi log ra logcat de nhin duoc log cat cac ban vao
// Window -> Show View -> Other -> Android -> LogCat
Log.d("debug", str1);
ShowToastLong(MainActivity.this, str);
}

@Override
public void onNothingSelected(AdapterView<?> arg0) {
// TODO Auto-generated method stub

}
});

// cach 2 dung adapter xay dung file layout.xml

spDemo2 = (Spinner) findViewById(R.id.spDemo2);

// tao mang la phan du lieu se show ra cho ng dung chon

array.add("5s");
array.add("15s");
array.add("25s");
array.add("35s");
array.add("45s");
array.add("55s");
array.add("65s");
array.add("75s");

// Tao Adapter

adapter = new ArrayAdapter<String>(MainActivity.this,
android.R.layout.simple_spinner_item, array);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

// set Adapter cho spinner
spDemo2.setAdapter(adapter);

spDemo2.setOnItemSelectedListener(new OnItemSelectedListener() {

@Override
public void onItemSelected(AdapterView<?> parent, View view,
int position, long id) {
// TODO Auto-generated method stub
String str = array.get(position).toString();
ShowToastLong(MainActivity.this, str);
}

@Override
public void onNothingSelected(AdapterView<?> arg0) {
// TODO Auto-generated method stub
}
});
}
public void getValueSelected(View v) {
String strStateSpinner = "Spinner 1 selected: "
+ spDemo1.getSelectedItem() + " \n Spinner 2 selected: "
+ spDemo2.getSelectedItem();

Log.d("debug", strStateSpinner);

}

public static void ShowToastLong(Context mContext, String Message) {
Toast.makeText(mContext, Message, Toast.LENGTH_LONG).show();
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
}

 

0 nhận xét:

Đăng nhận xét

 
Top