ArrayAdapter & Spinner

Slides:



Advertisements
Similar presentations
项目6 通用堆栈.
Advertisements

第13章 繪圖與多媒體 13-1 顯示圖檔-行動相簿 13-2 音樂播放-音樂播放器 13-3 影片播放-視訊播放器
四資二甲 第三週作業 物件導向程式設計.
實驗五:多媒體播放器選單介面.
Part 2 開發Android應用程式的流程
第一章 面向对象程序设计.
類別與物件 Class & Object.
手持式裝置之隨身照護應用 Android開發環境設定 鐘國家 老師.
手持式裝置之隨身照護應用 Android開發環境設定 鐘國家 老師.
Android App 系統開發教學 Luna 陳雯琳 2014/12/18
建立Android新專案 建國科技大學 資管系 饒瑞佶 2010/10.
厦门大学数据库实验室 报告人:谢荣东 导师:林子雨 2014年8月30日
實驗四:單位轉換程式.
第2章 建立Android應用程式 2-1 Java語言、XML文件與Android 2-2 建立第一個Android應用程式
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智慧型手機程式設計實務應用班
Java 程式設計 講師:FrankLin.
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 使用意圖啟動活動
ANDROID PROGRAMMING2.
CH7 佈局、按鈕與文字編輯元件.
Android + Service 建國科技大學 資管系 饒瑞佶.
Android 基礎.
實驗十四:顯示與控制地圖.
Java程序设计 第9章 继承和多态.
第2讲 移动应用开发基础知识(二) 宋婕
建立Android新專案 Android智慧型手機程式設計 程式設計與應用班 建國科技大學 資管系 饒瑞佶 2012/4 V1
第8章 Service解析.
第6章 建立Android使用介面 6-1 介面元件的基礎 6-2 Android的事件處理 6-3 按鈕元件 6-4 文字元件
Ch02-基礎語法.
C++语言程序设计 C++语言程序设计 第七章 类与对象 第十一组 C++语言程序设计.
第11章 系统结构与包模型模型.
實驗十一:待辦事項程式 (儲存在手機上).
主编:钟元生 赵圣鲁.
ArrayAdapter & Spinner
UI高级控件.
Chapter 5 Basic UI Design.
Android視窗介面 建國科技大學 資管系 饒瑞佶 2010/10.
主编:钟元生 赵圣鲁.
實驗九:延續實驗八, 製作一個完整音樂播放器
Location Based Services - LBS
進階UI元件:Spinner與接合器 靜宜大學資管系 楊子青
補間動畫 (Tween Animation) 靜宜大學資管系 楊子青
選單.
Java程式初體驗大綱 大綱 在學程式之前及本書常用名詞解釋 Hello Java!程式 在Dos下編譯、執行程式
Android視窗介面 建國科技大學 資管系 饒瑞佶 2010/10.
第二章 Java基本语法 讲师:复凡.
進階UI元件:ListView元件以及複選 靜宜大學資管系 楊子青
RecyclerView and CardView
Android Speech To Text(STT)
用Intent啟動程式中的其他Activity、運用WebView顯示網頁 靜宜大學資管系 楊子青
JAVA 程式設計與資料結構 第三章 物件的設計.
第2章 Java语言基础.
讀取網路資料及JSON開放資料 靜宜大學資管系 楊子青
控制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,點選後可以修改文字標籤的前景顏色

package yoo.yoo; import android.app.Activity; import android.graphics.Color; import android.os.Bundle; import android.view.View; import android.widget.AdapterView; import android.widget.ArrayAdapter; import android.widget.Spinner; import android.widget.TextView; public class Yoo extends Activity {     /** Called when the activity is first created. */   private Spinner sp;     private TextView   text;     int i; @Override        public void onCreate(Bundle savedInstanceState) {         super.onCreate(savedInstanceState);         setContentView(R.layout.main);                         text=(TextView)findViewById(R.id.txt);         sp=(Spinner)findViewById(R.id.sp);          String color[]={"yellow", "red", "white"};         ArrayAdapter<String> adapter=new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, color);                 adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);         sp.setAdapter(adapter);              sp.setOnItemSelectedListener(getName); }     private Spinner.OnItemSelectedListener getName=new Spinner.OnItemSelectedListener(){ public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2, long arg3) { // TODO Auto-generated method stub                                                i=arg0.getSelectedItemPosition();                                          if(i==0)text.setTextColor(Color.YELLOW);                     if(i==1)text.setTextColor(Color.RED);                     if(i==2)text.setTextColor(Color.WHITE); public void onNothingSelected(AdapterView<?> arg0) {              }; ================================網頁================================ package two.two; import android.content.Intent; import android.net.Uri; public class two extends Activity {     @Override         findViews();         adapter();         setListeners();     }     private String names[]={"Yahoo", "Google", "Pchome"};     private Spinner sp;     private void findViews(){      sp=(Spinner)findViewById(R.id.sp);     private void adapter(){       ArrayAdapter<String> adapter=new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, names);       adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);          sp.setAdapter(adapter);         private void setListeners(){      int a;      a=arg0.getSelectedItemPosition(); if(a==0){ Uri u=Uri.parse("http://yahoo.com.tw"); Intent i =new Intent(Intent.ACTION_VIEW,u); startActivity(i); if(a==1){ Uri u1=Uri.parse("http://google.com.tw"); Intent i1 =new Intent(Intent.ACTION_VIEW,u1); startActivity(i1); if(a==2){ Uri u2=Uri.parse("http://pchome.com.tw"); Intent i2 =new Intent(Intent.ACTION_VIEW,u2); startActivity(i2);