Text系列前兩篇都在介紹元件的使用與XML檔的程式說明,這篇將會分享比較特別的元件如何用撰寫Java語言帶給元件實質上的功能。這篇相較Text系列前兩篇重要,趕快去洗把臉,提振一下精神吧~
Text輸入與顯示不就是使用者輸入資料進去然後顯示出來就結束了,那有甚麼特別的嗎
或許就寫程式為類似以下樣式
TextView textview;
EditText edittext;
textview.setText(edittext.getText.toString);
沒錯大部分基本Text元件相對比較容易實作,不過其中有比較特別的Text元件需要開發者加入一些元素進去,比如:加入一些選項給使用者,使得使用者能夠快速輸入資料,不再完全依賴自己輸入完整的資料,又或者在Text元件上複合按鈕的功能能帶給使用者不一樣的體驗,既然要做到上述的功能那就需要三個Text元件,分別為AutoCompleteTextView、MultiAutoCompleteTextView和CheckedTextView。那麼現在準備為大家帶來這三個元件的介紹囉~Are you ready?
首先,一開始要找到元件,就必須取得元件的ID,所以要建立尋找ID的函式。
private void findViews() {
// 找到按鈕元件的id
autotv1 = (AutoCompleteTextView)findViewById(R.id.autotv1);
autotv2 = (MultiAutoCompleteTextView)findViewById(R.id.autotv2);
}
AutoCompleteTextView、MultiAutoCompleteTextView元件都是提供使用者輸入時選項的提示,那麼選項的提示怎麼來的,當然是自己做啊(>W<)!別激動千萬不要按右上角的按鈕!那麼開發者應該如何製作選單呢?
第一,建立提供使用者選項的陣列,將資料加入至陣列中
private String[] lang={"Java","C++","C","C#","Python"};
第二,建立Adapter物件提供資料位置,Adapter是甚麼?這對剛入門的我就有點挑戰。我查詢Android Studio的文件,依照我的理解Adapter物件類似一座讓資料與畫面顯示的橋梁,且每一選項都能創建自己的畫面(view物件)。也就是說要讓資料通過Adapter物件形成使用者所看到的畫面就醬。
private void setadapter() {
// 建立adapter選擇選單樣式、存放資料
ArrayAdapter<String> adapter
=new ArrayAdapter<String>(this,android.R.layout.simple_dropdown_item_1line,lang);
autotv1.setAdapter(adapter);
autotv2.setAdapter(adapter);
autotv2.setTokenizer(new MultiAutoCompleteTextView.CommaTokenizer());
}
官方文件定義CheckedTextView為CheckedTextView是由TextView元件延伸且支援像CheckBox可勾選的介面與呈現。(這段話是經過我自己理解解釋而來,相關內容參見)了解CheckedTextView是甚麼以後,那我們就開始來實作唄!
一開始與AutoCompleteTextView、MultiAutoCompleteTextView相同就是要找元件的ID,以後遇到任何需要使用的元件就必須尋找ID,那開始唄!
private void findViews() {
// 找到按鈕元件的id
chktv = (CheckedTextView)findViewById(R.id.chktv);
}
接著下來要讓CheckedTextView勾選改變後要有變化,所以...
private void setListener() {
chktv.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
switch (v.getId()){
case R.id.chktv:
{
if(chktv.isChecked()){
chktv.setChecked(!chktv.isChecked());
Toast.makeText
(MainActivity.this,"取消勾選",Toast.LENGTH_SHORT).show();
}
else{
chktv.setChecked(!chktv.isChecked());
Toast.makeText(MainActivity.this,"勾選",Toast.LENGTH_SHORT).show();
}
}
}
}
});
}
chktv.setOnClickListener(new View.OnClickListener()...
使用匿名類別建立偵聽器(偵聽器建立可以參見[Day06]Android學習-元件介紹-Button)
v.getId()
得到唯一能辨識元件的ID
switch...case...
case符合switch括號內的值就會採取case冒號後的程式內容
chktv.isChecked()
判斷chktv的check狀態
chktv.setChecked(!chktv.isChecked());
若CheckedTextView前一個狀態是甚麼,那麼在點擊CheckedTextView後,Checked狀態應該與上一個相反
Toast.makeText(MainActivity.this,"取消勾選",Toast.LENGTH_SHORT).show();
Toast在這個程式用來顯示勾選狀態(Toast相關定義為是view物件裝載一個快速閃過的短訊,參見Toast)
終於介紹完AutoCompleteTextView、MultiAutoCompleteTextView和CheckedTextView的後端程式了,接者接者......我們來實測吧!
恭喜大家完成Text系列實作
以後就可以用Text和使用者作互動囉!
Thank you for your time.