1. 程式人生 > >高階控制元件 自動提示文字框與下拉列表

高階控制元件 自動提示文字框與下拉列表

一、 高階控制元件使用步驟
1 、獲取資料
2 、建立介面卡
3 、繫結介面卡

二、自動提示文字框
1 、AutoCompleteTextView(單一提示)
android:completionThreshold=”1”

2 、MultiAutoCompleteTextView(多次提示)
//設定多次提示時,設定分隔符方法
Tokenizer t = new MultiAutoCompleteTextView.CommaTokenizer();
mactv_main.setTokenizer(t);

3、 兩種自動提示文字框的異同
AutoCompleteTextView:支援基本的自動完成功能,適用在各種搜尋功能中,並且可以根據自己的需求設定他的預設顯示資料
MultiAutoCompleteTextView: 可支援選擇多個值(在多次輸入的情況下),分別用分隔符分開,並且在每個值選中的時候再次輸入值時會自動去匹配。
可用在發簡訊,發郵件時選擇聯絡人這種型別當中。

public class MainActivity extends AppCompatActivity {
//    自動補全
    private String[] data1;
    private ArrayAdapter<String> adapter1;
    private AutoCompleteTextView act_main_act1;
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        act_main_act1=this
.findViewById(R.id.act_main_act1); // 3.1 獲取資料 data1=new String[] { "憤怒的小鳥", "湯姆貓", "落湯雞", "牛牛", "哈巴狗", "神龍", "烤鴨", "小象", "美人魚", "九尾狐" }; // 3.2 建立介面卡 adapter1=new ArrayAdapter<String>(this,R.layout.act_main_item1,data1); // 3.3 繫結介面卡 act_main_act1.setAdapter(adapter1); } }

三、兩種自動提示文字框的異同
AutoCompleteTextView:支援基本的自動完成功能,適用在各種搜尋功能中,並且可以根據自己的需求設定他的預設顯示資料
MultiAutoCompleteTextView: 可支援選擇多個值(在多次輸入的情況下),分別用分隔符分開,並且在每個值選中的時候再次輸入值時會自動去匹配。
可用在發簡訊,發郵件時選擇聯絡人這種型別當中。

四、下拉框 Spinner

素材
String[] names = { “憤怒的小鳥”, “湯姆貓”, “落湯雞”, “牛牛”, “哈巴狗”, “神龍”, “烤鴨”,
“小象”, “美人魚”, “九尾狐” };
int[] images = { R.drawable.bird, R.drawable.cat, R.drawable.chicken,
R.drawable.cow, R.drawable.dog, R.drawable.dragon,
R.drawable.duck, R.drawable.elephant, R.drawable.fish,
R.drawable.fox };

事件監聽
AdapterView.OnItemSelectedListener

public class MainActivity extends AppCompatActivity {
//    下拉框
    private List<Option> data2;
    private ArrayAdapter<Option>  adapter2;
    private Spinner sp_main_sp1;

//   下拉圖片
    private List<Map<String,Object>> data3;
    private SimpleAdapter adapter3;
    private Spinner sp_main_sp2;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        sp_main_sp1=this.findViewById(R.id. sp_main_sp1);
        sp_main_sp2=this.findViewById(R.id. sp_main_sp2);

//    下拉框
        data2=loadData2();
        adapter2=new ArrayAdapter<Option>(this,R.layout.act_main_item1,data2);
        sp_main_sp1.setAdapter(adapter2);
        sp_main_sp1.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
            @Override
            public void onItemSelected(AdapterView<?> adapterView, View view, int position, long id) {
                Option selectedItem= (Option) adapterView.getSelectedItem();
                Toast.makeText(MainActivity.this,selectedItem.getHtml(), Toast.LENGTH_SHORT).show();
            }

            @Override
            public void onNothingSelected(AdapterView<?> parent) {

            }
        });

//   下拉圖片
        data3=loadData3();
        adapter3=new SimpleAdapter(this,data3,R.layout.sp_main_item2,new String[]{"name","image"},new int[]{R.id.tv_main_item_tv1,R.id.iv_main_item_iv1});
        sp_main_sp2.setAdapter(adapter3);
    }

    private List<Map<String,Object>> loadData3() {
        List<Book> list=new BookDAO().list();
        List<Map<String,Object>> mapList=new ArrayList<>();
        Map<String,Object> map=null;
        for (Book book : list) {
            map=new HashMap<>();
            map.put("name",book.getName());
            map.put("image",book.getImage());
            mapList.add(map);

        }
        return mapList;
    }

    private List<Option> loadData2() {
       List<Book> list= new BookDAO().list();
       List<Option> optionList=new ArrayList<>();
       for (Book book:list){
           optionList.add(new Option(book.getId()+"",book.getName()));
       }
       return optionList;
    }
}