ArrayAdapter & Spinner

Slides:



Advertisements
Similar presentations
第2章  Android应用的界面编程.
Advertisements

四資二甲 第三週作業 物件導向程式設計.
實驗五:多媒體播放器選單介面.
Part 1 學習使用基本介面元件和編排模式 單元11 學習更多介面元件的屬性 單元12 Spinner下拉式選單元件
Part 2 開發Android應用程式的流程
ArrayAdapter & Spinner
Location Based Services - LBS
手持式裝置之隨身照護應用 Android開發環境設定 鐘國家 老師.
手持式裝置之隨身照護應用 Android開發環境設定 鐘國家 老師.
ANDROID PROGRAMMING1.
Android App 系統開發教學 Luna 陳雯琳 2014/12/18
建立Android新專案 建國科技大學 資管系 饒瑞佶 2010/10.
厦门大学数据库实验室 报告人:谢荣东 导师:林子雨 2014年8月30日
Chapter 4 手機控制項應用.
實驗四:單位轉換程式.
Chapter 13 Android 實戰演練.
Android + JUnit 單元測試 建國科技大學資管系 饒瑞佶 2012/8/19V4.
實驗十三:顯示目前經緯度位置.
Ch06 再談選單元件 物件導向系統實務.
使用Android控制Arduino 史先强
Android資料庫處理 Android智慧型手機程式設計 程式設計與應用班 建國科技大學 資管系 饒瑞佶 2012/4 V1
第9章 位置服务与地图应用.
第一个Android程序 本讲大纲: 1、创建Android应用程序 2、Android项目结构说明 3、运行Android应用程序
第8章 Android内容提供者(ContentProvider)应用
Chapter 6 Advanced UI Design.
Android智慧型手機程式設計實務應用班
Chapter 7 Android應用元件 Android應用元件可以幫助我們獲得系統資源訊息(ActivityManager)、提供系統服務(Service)、搜尋系統服務(SearchManager)、監聽Intent訊息(Broadcast Receiver)以及資料共享(ContentProvider和ContentResolver)。
Android介面設計 Android智慧型手機程式設計 建國科技大學 資管系 饒瑞佶 2012/4 V1 2012/8 V2
Android Intent 建國科技大學 資管系 饒瑞佶 2011/1.
Chapter 6 進階UI設計.
第4章 Android生命周期.
第9章 使用意圖啟動活動與內建應用程式 9-1 意圖的基礎 9-2 使用意圖啟動活動
CH7 佈局、按鈕與文字編輯元件.
Android + Service 建國科技大學 資管系 饒瑞佶.
Android 基礎.
實驗十四:顯示與控制地圖.
第2讲 移动应用开发基础知识(二) 宋婕
RecyclerView and CardView
建立Android新專案 Android智慧型手機程式設計 程式設計與應用班 建國科技大學 資管系 饒瑞佶 2012/4 V1
第6章 建立Android使用介面 6-1 介面元件的基礎 6-2 Android的事件處理 6-3 按鈕元件 6-4 文字元件
手機的頁面轉換與資料傳遞.
Location Based Services - LBS
Java 程式設計 講師:FrankLin.
JAVA 程式設計與資料結構 第四章 陣列、字串與數學物件.
Ch02-基礎語法.
實驗十一:待辦事項程式 (儲存在手機上).
主编:钟元生 赵圣鲁.
Chapter 5 Basic UI Design.
Android視窗介面 建國科技大學 資管系 饒瑞佶 2010/10.
主编:钟元生 赵圣鲁.
實驗九:延續實驗八, 製作一個完整音樂播放器
Location Based Services - LBS
進階UI元件:Spinner與接合器 靜宜大學資管系 楊子青
補間動畫 (Tween Animation) 靜宜大學資管系 楊子青
選單.
Java程式初體驗大綱 大綱 在學程式之前及本書常用名詞解釋 Hello Java!程式 在Dos下編譯、執行程式
第二章 Java语法基础.
Android視窗介面 建國科技大學 資管系 饒瑞佶 2010/10.
Android WebService Android智慧型手機程式設計 程式設計與應用班 建國科技大學 資管系 饒瑞佶 2012/4 V1
第二章 Java基本语法 讲师:复凡.
進階UI元件:ListView元件以及複選 靜宜大學資管系 楊子青
RecyclerView and CardView
Android Speech To Text(STT)
Activity的生命週期: 播放音樂與影片 靜宜大學資管系 楊子青
用Intent啟動程式中的其他Activity、運用WebView顯示網頁 靜宜大學資管系 楊子青
加速感測器 靜宜大學資管系 楊子青.
SQLite資料庫 靜宜大學資管系 楊子青.
控制UI界面 本讲大纲: 1、使用XML布局文件控制UI界面 2、在代码中控制UI界面 3、使用XML和Java代码混合控制UI界面
Part 8 Broadcast Receiver、Service和App Widget
進階UI元件:Spinner與接合器 靜宜大學資管系 楊子青
Presentation transcript:

ArrayAdapter & Spinner

Adapter in Android Android應用了adapter的概念來橋接「資料」與「介面元件」 Adapting: 當兩個不同介面的物件必須互通時,由adapter負責介面之間的橋接 (adapter pattern) 例如:當字串陣列要作為下拉式選單的item,android要求使用adapter來轉接陣列與選單 Android adapter種類有:ArrayAdapter, SimpleAdapter, CursorAdapter 本次課程主要探討ArrayAdapter與下拉式選單

ArrayAdapter (陣列接口) ArrayAdapter<String> adapter = new ArrayAdapter<String>(arg1, arg, arg3):新增一個陣列接口 Arg1: this activity (以this) Arg2: 接口樣式的識別符號 Arg3: 傳入接口的陣列

使用ArrayAdapter建構一個下拉式選單的view Adapter.setDropDownViewResource(int res) Sets the layout resource to create the drop down views

範例 private String names[]={"stewart", "mary", "john"}; //宣告並初始化一個字串陣列 ….. ArrayAdapter<String> adapter_name=new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, names); //初始化一個名為adapter_name的陣列接口 adapter_name.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); //將字串陣列橋接至下拉式選單的view中

將陣列獨立成專案的資源 若字串陣列用於作為下拉式選單的「選項」,那麼可以將選項直接獨立成為string.xml所記載的「資源」,而不須成為.java的程式碼之中 res/valuse/string.xml <resources> ……. <string-array name=“students”> //定義一個名為students的陣列資源 <item>Stewart</item> <item>Mary</item> <item>John</item> </string-array> </resources>

從專案「資源」中建立ArrayAdapter ArrayAdapter<CharSequence> . createFromResource(this, resID, viewResID) Creates a new ArrayAdapter from external resources 僅用於<CharSequence>,且需指定橋接目標的viewID ArrayAdapter<CharSequence> adapter_name=ArrayAdapter.createFromResource(this, R.array.students, android.R.layout.simple_spinner_item);

Spinner – 下拉式選單

main.xml中新增spinner Spinner – 下拉式選單介面元件 drawSelectorOnTop (必須): prompt: spinner的標題。該屬性不接受string,必須透過外部資源 <Spinner android:id="@+id/xxx" android:layout_width="fill_parent" android:layout_height="wrap_content" android:drawSelectorOnTop="true" android:prompt="@string/color_prompt" />

android:prompt 指定下拉式選單標題時,必須在外部資源string.xml中先制定一個<string>資源,再指定到android:prompt <resources> … <string name="color_prompt">字串前景顏色</string> </resources>

練習 試著設計一個具備「Stewart」、「Mary」、「John」三位學生姓名的下拉式選單 string.xml 中新增代表prompt以及<string-array> main.xml中新增<spinner>介面元件 .java程式中透過ArrayAdapter接口,將string-array外部資源橋接至spinner

新增外部字串資源 Res/values/string.xml <resources> … <string name="students">學生列表</string> <string-array name="student_name"> <item>Stewart</item> <item>Mary</item> <item>John</item> </string-array> </resources>

設計spinner元件 main.xml: <Spinner android:id="@+id/foreColor" android:layout_width="fill_parent" android:layout_height="wrap_content" android:drawSelectorOnTop="true" android:prompt="@string/students" />

宣告並設定ArrayAdapter private Spinner field_name; private TextView txtDisplay; private void findViews(){ field_name=(Spinner)findViewById(R.id.foreColor); txtDisplay=(TextView)findViewById(R.id.txtDisplay); ArrayAdapter<CharSequence> adapter_name=ArrayAdapter.createFromResource(this, R.array.student_name, android.R.layout.simple_spinner_item); adapter_name.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); field_name.setAdapter(adapter_name); } //此時可以開啟模擬器欣賞下拉式選單的外觀,但是還未完成點選後的動作

Spinner的「動作」 下拉式選單的動作不外乎就是「點選」選項 隸屬於spinner.onItemSelectedListener onNothingSelected(): 通常不實作 隸屬於spinner.onItemSelectedListener Spinner.setOnItemSelectedListener()

修改setListeners() private void setListeners(){ field_name.setOnItemSelectedListener(getName); }

新增一個OnItemSelectedListener private Spinner.OnItemSelectedListener getName=new Spinner.OnItemSelectedListener(){ public void onItemSelected(AdapterView<?> adapterView, View v, int position, long id) { txtDisplay.setText("Hello, my name is " + adapterView.getSelectedItem().toString()); } public void onNothingSelected(AdapterView<?> arg0) { };

Get selected item and position Spinner可以取得所點選的「選項」以及選項在列表中的位置號碼(以0開始) .getSelectedItem():傳回選項 .getSelectedItemPosition(): 傳回選項編號

練習 試設計一個具備「white」、「yellow」、「red」三選項的spinner,點選後可以修改文字標籤的前景顏色

<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" > <TextView android:layout_height="wrap_content" android:text="選擇網頁" /> <Spinner android:id="@+id/spn" android:drawSelectorOnTop="true"android:prompt="@string/names"

<TextView android:id="@+id/t1" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text=" " /> <Button android:id="@+id/btn" android:text="GO" </LinearLayout>

package ww.te; import android.R.string; import android.app.Activity; import android.content.Intent; import android.graphics.Color; import android.net.Uri; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.AdapterView; import android.widget.ArrayAdapter; import android.widget.Button; import android.widget.Spinner; import android.widget.TextView;

public class Test2 extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); findViews(); ArrayAdapter<String> adapter_name=new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, names); //ArrayAdapter<CharSequence>adapter_name=ArrayAdapter.createFromResource(this, R.array.student_name, android.R.layout.simple_spinner_item); adapter_name.setDropDownViewResource( android.R.layout.simple_spinner_dropdown_item); spn.setAdapter(adapter_name); setListeners(); }

private TextView t1; private Spinner spn; private Button b1; private String X; private int op; private String names[]={"Google", "Yahoo", "Pchome"}; private void findViews(){ t1=(TextView)findViewById(R.id.t1); spn=(Spinner)findViewById(R.id.spn); b1=(Button)findViewById(R.id.btn); } private void setListeners(){ spn.setOnItemSelectedListener(getName); b1.setOnClickListener(btn);

private Spinner. OnItemSelectedListener getName=new Spinner private Spinner.OnItemSelectedListener getName=new Spinner.OnItemSelectedListener(){ public void onItemSelected(AdapterView<?> adapterView, View v, int position, long id) { op=adapterView.getSelectedItemPosition(); switch(op) { case 0: X="http://www.google.com/webhp?source=search_app"; t1.setText("Google"); break; case 1: X="http://tw.yahoo.com/"; t1.setText("Yahoo"); case 2: X="http://www.pchome.com.tw/"; t1.setText("Pchome"); }

} public void onNothingSelected(AdapterView<?> arg0) { }; private OnClickListener btn=new OnClickListener(){ public void onClick(View v) { // TODO Auto-generated method stub Uri uri=Uri.parse(X); Intent myIntent=new Intent(Intent.ACTION_VIEW, uri); startActivity(myIntent);