顯示具有 Spinner 標籤的文章。 顯示所有文章
顯示具有 Spinner 標籤的文章。 顯示所有文章

2012年3月10日 星期六

[TQC+ Android] 2-9 姓名清單 Use ArrayAdapter , Spinner , SQLiteDatabase





將string.xml裡的陣列資料寫入資料庫 , 再從資料庫裡依字母排序出來 , 並放在Spinner裡 ,  下面是程式碼。





package COM.TQC.GDD02;


import android.app.Activity;
import android.content.res.Resources;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.widget.ArrayAdapter;
import android.widget.Spinner;

public class GDD02 extends Activity
{
 private static final String DBNAME = "MY_DB";
 private static final String TABLENAME = "MY_TABLE";
 private static final String FIELD01_NAME = "_id";
 private static final String FIELD02_NAME = "_text1";
 private SQLiteDatabase dataBase;
 private Spinner Spinner01;
 private String[] strNames , orderNames;
 private Cursor cursor;
 //資料筆數
 private int recordCount;
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState)
    {
     super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        
        Spinner01 = (Spinner) findViewById(R.id.Spinner01); 
        Resources resources = getResources(); 
        strNames = resources.getStringArray(R.array.strNames);
               
        String CREATE_SQL = "create table if not exists "+TABLENAME+" ("+FIELD01_NAME+" INTEGER PRIMARY KEY, "+FIELD02_NAME+" TEXT)";
        dataBase = openOrCreateDatabase(DBNAME, MODE_PRIVATE, null);
        dataBase.execSQL(CREATE_SQL);
     
     for(int i=0; i0)
     {
      cursor.moveToFirst();
      orderNames = new String[strNames.length];
      for(int i=0; i < strNames.length ; i++)
      {
       orderNames[i] = cursor.getString(1);
       cursor.moveToNext();
      }
     }
     
     ArrayAdapter adapter = new ArrayAdapter(this,  
                android.R.layout.simple_spinner_item, orderNames);  
        adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);  
        Spinner01.setAdapter(adapter);      
        Spinner01.setSelection(0);
        dataBase.execSQL("DROP TABLE "+TABLENAME);
        dataBase.close();
    }
}



main.xml
 
 





資料來源 , values/strings.xml
    
    姓名清單
 
  Ella
  Body
  David
  Andy
  Cindy
  GiGi
  Fancy
 





P.S. 題目中所要求的Variable和Method皆會保留 , 也會根據題目所要求的流程去實作 , 縱使題目要求繞遠路....



2012年2月7日 星期二

[TQC+ Android] 1-8 選擇手機型號 Use Spinner






將Spinner元件預設為"請選擇" , 當選擇了某一手機型號時 , 將此型號接續顯示於"選擇手機型號"的TextView中 , 如選取的選項惟請選擇時(即不選擇任何型號) , TextView後方步顯示任何文字 , 一般來說在設定下拉選單的呈現樣式 , 我們都是使用Android 提供的 , 就像下面那行程式碼 setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item) , 而這題要求我們使用自製的TextView去替換 , 其實Android所提供的 android.R.layout.simple_spinner_dropdown_item , 裡面放的就是一個TextView , 而自製的TextView題目也做好了存放在res/layout/myspinner_layout , 以下是程式碼。


package COM.TQC.GDD01;

import android.app.Activity;
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 GDD01 extends Activity
{
  private String[] types={"請選擇","HTC HERO","HTC MAGIC","HTC TATTOO",
      "NEXUS ONE","SONY X10","MOTO MILESTONE"};
  
  Spinner spinner; 
  TextView textView;
  
  @Override
  public void onCreate(Bundle savedInstanceState)
  {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    
    textView = (TextView) this.findViewById(R.id.text1);
    
    ArrayAdapter AB = new ArrayAdapter(this, android.R.layout.simple_spinner_item, types);
    AB.setDropDownViewResource(R.layout.myspinner_layout);
       
    spinner = (Spinner) this.findViewById(R.id.mySpinner);    
    spinner.setAdapter(AB);   
    spinner.setOnItemSelectedListener(SOnItemSelectedListener);    
  }
  
  public Spinner.OnItemSelectedListener SOnItemSelectedListener = new Spinner.OnItemSelectedListener()
  {
 @Override
 public void onItemSelected(AdapterView arg0, View arg1, int arg2,
   long arg3)
 {
  // TODO Auto-generated method stub
  if(arg2 == 0) textView.setText(getText(R.string.str1));
  
  else textView.setText(getText(R.string.str1)+types[arg2]);
 }

 @Override
 public void onNothingSelected(AdapterView arg0)
 {
  // TODO Auto-generated method stub  
 }   
  };  
}


main.xml

  
  


myspinner_layout.xml











P.S. 題目中所要求的Variable和Method皆會保留 , 也會根據題目所要求的流程去實作 , 縱使題目要求繞遠路....



2012年2月5日 星期日

[TQC+ Android] 1-2 電費計算機 Use Spinner




在選擇伏特 , 輸入安培及輸入每天使用時數與每度電費後 , 按下寄算電器每月電費按鈕後即可在下方顯示金額 , 並可依模擬器語系變更程式語系 , 這題要測驗的是Android多國語系的設定 , 也就是values資料夾的命名 , values-en 和 values-zh , 將中英文介面中所要顯示的文字分別宣告在兩個資料夾內的string.xml中 , 再來就是 RelativeLayout的配置  , 以下是程式碼。





package COM.TQC.GDD01;


import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Spinner;
import android.widget.TextView;


public class GDD01 extends Activity
{
    /** Called when the activity is first created. */

 @Override
    public void onCreate(Bundle savedInstanceState)
 {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        
        MyOutcome = (TextView) this.findViewById(R.id.respond);
        
        input_a = (EditText) this.findViewById(R.id.input_a);
        input_hr = (EditText) this.findViewById(R.id.input_hr);
        input_m = (EditText) this.findViewById(R.id.input_m);
        
        submit = (Button) this.findViewById(R.id.submit);
        submit.setOnClickListener(BOnClickListener);
        
        sp = (Spinner) this.findViewById(R.id.input_v);         
        ArrayAdapter adpAdapter = ArrayAdapter.createFromResource(this, R.array.option_vs , android.R.layout.simple_spinner_item);
        adpAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        sp.setAdapter(adpAdapter); 
        sp.setOnItemSelectedListener(SOnItemSelectedListener);        
    }
    
    TextView MyOutcome;
    EditText input_a , input_hr , input_m;
    Spinner sp;
    Button submit;
    int volt , sum;
    final int VOLT_110v = 0 , VOLT_220v = 1;    
    
    public Button.OnClickListener BOnClickListener = new Button.OnClickListener()
    {
     
  @Override
  public void onClick(View v)
  {
   // TODO Auto-generated method stub
   int ampere = Integer.parseInt(input_a.getText().toString());
   int hour = Integer.parseInt(input_hr.getText().toString());
   int month = Integer.parseInt(input_m.getText().toString());
      
   sum = (int) (volt * ampere / 1000 * hour * 30 * month);
   MyOutcome.setText("$ "+sum);   
  }     
    };
    
    public Spinner.OnItemSelectedListener SOnItemSelectedListener = new Spinner.OnItemSelectedListener()
    {
  @Override
  public void onItemSelected(AdapterView arg0, View arg1, int arg2,
    long arg3) {
   // TODO Auto-generated method stub
   switch(arg2)
   {
     case VOLT_110v:      
      volt = 110;
      break;
     case VOLT_220v:
      volt = 220;
      break;
   }   
  }

  @Override
  public void onNothingSelected(AdapterView arg0) {

   // TODO Auto-generated method stub   

  }     

    };

}

再來是 main.xml



    

        

        

        

        

        

        

        

        

        

        



P.S. 題目中所要求的Variable和Method皆會保留 , 也會根據題目所要求的流程去實作 , 縱使題目要求繞遠路....



2010年11月26日 星期五

[Android] 如何使用Google Translate API 和 Spinner 製作翻譯機



因為秉持Open Source的精神 , 所以Google 發佈了許多有趣的API給開發者拿來發揮創意 , 今天在網路上找到了Google Translate API 想先簡單的搭配 Spinner 做一個翻譯機出來試試 , 由於這個API不是存在Android 的jar檔內 , 所以我們必須先下載Google Translate 的jar檔 , 接著透過Eclipse就可以import jar檔到我們的程式當中了 , 首先到這裡去下載jar檔 , 接著在Eclipse中的 Package Explorer 中選取開發的專案 > Propertires > Java Build Path > 右邊的 Libabries > Add External JARs , 成功之後就可以發現多出一個圖示: Referenced Libabries , 裡面有剛剛加入的jar檔 , 接著試程式碼的部分




package com.android;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemSelectedListener;
import android.widget.ArrayAdapter;
import android.widget.EditText;
import android.widget.Spinner;
import android.widget.Button;

import com.google.api.translate.Language;
import com.google.api.translate.Translate;

public class GoogleTranslateSpinner extends Activity implements OnItemSelectedListener , Button.OnClickListener
{
 /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        
        AAdapter = new ArrayAdapter(this,android.R.layout.simple_spinner_item,LanguageNameArray);
        AAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        //ArrayAdapter設定下拉式清單內容的layout格式
        //android. 開頭的範本是由Android提供的
        
        SpinnerFrom = (Spinner) findViewById(R.id.SpinnerFrom);
        SpinnerFrom.setAdapter(AAdapter);
        SpinnerFrom.setOnItemSelectedListener(this);
        SpinnerTo = (Spinner) findViewById(R.id.SpinnerTo);        
        SpinnerTo.setAdapter(AAdapter);
        SpinnerTo.setOnItemSelectedListener(this);        
        
        EditTextFrom = (EditText) findViewById(R.id.EditTextFrom);
        EditTextTo = (EditText) findViewById(R.id.EditTextTo);
        
        Button = (Button) findViewById(R.id.Button);
        Button.setOnClickListener(this);
        
        Translate.setHttpReferrer("http://shung007.blogspot.com/");
        //Translate.setHttpReferrer(" Enter the URL of your site here");
        //必要!!! 否則程式會出現Exception
    }
    
    Spinner SpinnerFrom , SpinnerTo;
    EditText EditTextFrom , EditTextTo;
    Button Button;
    
    int positionFrom , positionTo;
    
    ArrayAdapter AAdapter;
    
    public String[] LanguageNameArray = new String[]{
            "繁體中文", "CHINESE_SIMPLIFIED", "GERMAN", "ENGLISH",
            "JAPANESE", "FRENCH"
        };
    //作為顯示在Spinner裡的清單內容
    
    public Language[] LanguageCode = new Language[]{
        Language.CHINESE_TRADITIONAL, Language.CHINESE_SIMPLIFIED,
        Language.GERMAN, Language.ENGLISH, Language.JAPANESE, Language.FRENCH      
    };
    //相對應的LanguageCode , 作為之後傳遞的引數用    

 @Override
 public void onItemSelected(AdapterView parent, View view, int position,
   long arg)
 {  
  if(parent.equals(SpinnerFrom)) positionFrom = position;
  else positionTo = position;
  //判斷並記錄使用者選擇了哪個語言翻譯
 }

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

 @Override
 public void onClick(View ButtonView)
 {
  //按下Translate按鈕之後 , 執行翻譯的動作
  try
  {
   EditTextTo.setText(Translate.execute(EditTextFrom.getText().toString(), LanguageCode[positionFrom], LanguageCode[positionTo]));
  } catch (Exception e)
  {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
 }    
}




值得一提的是他支持翻譯的語言相當多 , 不只我程式中列出的六個 , 從他的Language.java可以看得出來還支持哪些語言 , 另外 , 其實這個api需要透過網路把你輸入的內容傳送到資料庫進行翻譯 , 所以別忘了設定網路權限!!!!

<uses-permission android:name="android.permission.INTERNET"/>



最後是Layout的部分













 














整個程式很精簡但是很容易就達到我們的要求 , 因為最複雜的部分google都幫我們解決了 , 真好!




相關文章


[Android] 如何使用 TextToSpeech (TTS)

Google Analytics