Androin高階控制元件01 自動提示文字框與下拉列表
1、高階控制元件展示
2、高階控制元件與低階控制元件區別
是否使用介面卡
- 介面卡種類和作用
3.1 種類
陣列介面卡 ArrayAdapter
new ArrayAdapter(this,R.layout.actv_style, names);
3.2 簡單介面卡 SimpleAdapter
也叫“並不簡單的簡單介面卡”
3.3 作用
橋樑、 展示
- 高階控制元件使用步驟
3.1 獲取資料
3.2 建立介面卡
3.3 繫結介面卡
package com.example.myapplication07;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.AutoCompleteTextView;
import android.widget.SimpleAdapter;
import android.widget.Spinner;
import android.widget.Toast;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class MainActivity extends AppCompatActivity {
private String[] data1;//獲取資料來源 先定義一個數組
private ArrayAdapter adapter1;//建立介面卡 先定義一個介面卡
private AutoCompleteTextView actv_main_content;//繫結介面卡 定義繫結展示的頁面資料
private List<Option> data2=new ArrayList<>(); private ArrayAdapter adapter2; private Spinner spacer_main_img; private List<Map<String,Object>> data3=new ArrayList<>(); private SimpleAdapter adapter3; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); intiVew();//呼叫 data1 = new String[]{"憤怒的小鳥", "湯姆貓", "落湯雞", "牛牛", "哈巴狗", "神龍", "烤鴨", "小象", "美人魚", "九尾狐"}; //初始化資料 adapter1 = new ArrayAdapter(this,R.layout.actv_main_item1,data1);// 初始化介面卡 actv_main_content.setAdapter(adapter1); //繫結介面卡 loadData2(); adapter2 = new ArrayAdapter(this,R.layout.actv_main_item1,data2); spacer_main_img.setAdapter(adapter2); loadData3(); adapter3 = new SimpleAdapter(this,data3,R.layout.spinner_main_item1,new String[]{"img","desc"},new int[]{R.id.iv_main_item_img,R.id.tv_main_item1_desc}); spacer_main_img.setAdapter(adapter3); spacer_main_img.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { @Override public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) { Map<String,Object> itemAtPosition = (Map<String, Object>) adapterView.getItemAtPosition(i); Toast.makeText(MainActivity.this,itemAtPosition.toString(),Toast.LENGTH_SHORT).show(); } @Override public void onNothingSelected(AdapterView<?> adapterView) { } }); } private void loadData3() { List<Book> list = new BookDAO().list(); Map<String,Object> map; for (Book book: list) { map = new HashMap<>(); map.put("img",book.getImage()); map.put("desc",book.getName()); data3.add(map); } } private void loadData2() { //http從Java端獲取資料 List<Map<String,String>> list = new ArrayList<>(); Map<String,String> map; for (int i=0; i<6; i++){ map =new HashMap(); map.put("deptId",i+""); map.put("deptName","公關"+i+"部門"); list.add(map); } for (Map<String,String> map1 : list){ data2.add(new Option(map1.get("deptId"),map1.get("deptName"))); } } //初始化控制元件 private void intiVew(){ //初始化定義繫結展示的頁面資料 actv_main_content=findViewById(R.id.actv_main_content); spacer_main_img=findViewById(R.id.spacer_main_img); } public void getContent(View view) { Option selectedItem = (Option) spacer_main_img.getSelectedItem(); Toast.makeText(this, selectedItem.getValue(), Toast.LENGTH_SHORT).show(); }
}
- 自動提示文字框
4.1 AutoCompleteTextView(單一提示)
android:completionThreshold=“1”
<!--自動提示框(單一提示)-->
<AutoCompleteTextView
android:layout_width="match_parent"
android:id="@+id/actv_main_content"
android:hint="請選擇"
android:layout_height="wrap_content" />
<Spinner
android:layout_width="match_parent"
android:id="@+id/spacer_main_img"
android:layout_height="wrap_content"></Spinner>
<Button
android:layout_width="match_parent"
android:text="獲取value值"
android:onClick="getContent"
android:layout_height="wrap_content" />
4.3 兩種自動提示文字框的異同
AutoCompleteTextView:支援基本的自動完成功能,適用在各種搜尋功能中,並且可以根據自己的需求設定他的預設顯示資料
MultiAutoCompleteTextView: 可支援選擇多個值(在多次輸入的情況下),分別用分隔符分開,並且在每個值選中的時候再次輸入值時會自動去匹配。
可用在發簡訊,發郵件時選擇聯絡人這種型別當中。
- 下拉框
Spinner
事件監聽
AdapterView.OnItemSelectedListener
核心:
1、陣列介面卡
String[] AutoCompleteTextView 項資源
List Spinner 項資源
2、獲取下拉框的值
3、簡單介面卡
List