1. 程式人生 > >Android Studio 自動文字提示與下拉列表

Android Studio 自動文字提示與下拉列表

1.自動文字提示

1.1.佈局

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">
    
    <!--提示框-->
<AutoCompleteTextView
    android:id="@+id/at_main_contunt"
    android:layout_width="match_parent"
    android:layout_height="wrap_content" />


</LinearLayout>

1.2,資原始檔

<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent" android:layout_height="wrap_content">



</TextView>

1.3, 程式碼

 private String[] date1;   //用於儲存資料
    private ArrayAdapter adapter1; //用於儲存介面卡
    private AutoCompleteTextView  at_main_contunt; //提示框
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        at_main_contunt=findViewById(R.id.at_main_contunt);

        //獲取資料
        date1=new String[]{
                "憤怒的小鳥", "湯姆貓", "落湯雞", "牛牛", "哈巴狗", "神龍", "烤鴨",
                "小象", "美人魚", "九尾狐"};
        //建立介面卡
        //引數1:文字
        // 引數2:資原始檔
        //引數3:資料
        adapter1=new ArrayAdapter(this,R.layout.aiy_main_item,date1);
       
        //繫結介面卡
        at_main_contunt.setAdapter(adapter1);
    }

效果如下: 在這裡插入圖片描述

2, 下拉框

2.1 ,佈局

   <!--下拉框-->
    <Spinner
        android:id="@+id/sp_main_sel"
        android:layout_width="match_parent"
        android:layout_height="50dp"></Spinner>

2.2,資源類

//book類
package com.example.t211_04;

public class Book {

    private Integer id;
    private String name;
    private Integer image;

    public Book() {
    }

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Integer getImage() {
        return image;
    }

    public void setImage(Integer image) {
        this.image = image;
    }
}

//
package com.example.t211_04;

import java.util.ArrayList;
import java.util.List;

public class BookDAO {
    public List<Book> list() {
        List<Book> bookList = new ArrayList<Book>();

        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};

        Book b = null;
        for (int i = 0; i < names.length; i++) {
            b = new Book();
            b.setId(i + 1);
            b.setName(names[i]);
            b.setImage(images[i]);

            bookList.add(b);
        }

        return bookList;
    }
}

package com.example.t211_04;

public class Option {

    private String value;
    private  String html;

    public String getValue() {
        return value;
    }

    public void setValue(String value) {
        this.value = value;
    }

    public String getHtml() {
        return html;
    }

    public void setHtml(String html) {
        this.html = html;
    }

    @Override
    public String toString() {
        return html;
    }

    public Option(String value, String html) {
        this.value = value;
        this.html = html;
    }
}

2.3, 程式碼

 private Spinner sp_main_sel;  //下拉框
     private ArrayAdapter adapter2;  //介面卡
     private List<Option> data2;  //資料
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        sp_main_sel= findViewById(R.id.sp_main_sel);
        data2=londata2(); //給資料插入值
  //初始化介面卡
        adapter2=new ArrayAdapter(this,R.layout.aiy_main_item,data2);
        //繫結介面卡
        sp_main_sel.setAdapter(adapter2);
    }

    //插入值的方法
    private List<Option> londata2() {
        //獲取
        List<Book> books = new BookDAO().list();
        List<Option> sels=new ArrayList<>();
        for (Book book : books) {
            sels.add(new Option(book.getId()+"",book.getName()));
        }
        return sels;
    }

具體效果如下: 在這裡插入圖片描述

在這裡插入圖片描述

3,帶文字圖片的下拉列表

3.1,佈局資原始檔

 <!--下拉框-->
    <Spinner
        android:id="@+id/sp_main_se2"
        android:layout_width="match_parent"
        android:layout_height="150dp"></Spinner>
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="horizontal" android:layout_width="match_parent"

    android:layout_height="80dp">
<ImageView
    android:id="@+id/sp_main_item_img"
    android:layout_width="80dp"
    android:layout_height="match_parent" />

    <TextView
        android:id="@+id/tv_main_item_text"
        android:layout_width="match_parent"
        android:layout_height="match_parent"

        />
    
    
</LinearLayout>

3.2,資源類

//book類
package com.example.t211_04;

public class Book {

    private Integer id;
    private String name;
    private Integer image;

    public Book() {
    }

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Integer getImage() {
        return image;
    }

    public void setImage(Integer image) {
        this.image = image;
    }
}

//
package com.example.t211_04;

import java.util.ArrayList;
import java.util.List;

public class BookDAO {
    public List<Book> list() {
        List<Book> bookList = new ArrayList<Book>();

        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};

        Book b = null;
        for (int i = 0; i < names.length; i++) {
            b = new Book();
            b.setId(i + 1);
            b.setName(names[i]);
            b.setImage(images[i]);

            bookList.add(b);
        }

        return bookList;
    }
}

package com.example.t211_04;

public class Option {

    private String value;
    private  String html;

    public String getValue() {
        return value;
    }

    public void setValue(String value) {
        this.value = value;
    }

    public String getHtml() {
        return html;
    }

    public void setHtml(String html) {
        this.html = html;
    }

    @Override
    public String toString() {
        return html;
    }

    public Option(String value, String html) {
        this.value = value;
        this.html = html;
    }
}

3.3,程式碼類

 private Spinner sp_main_se2;  //Spinner
    private SimpleAdapter adapter3;
    private List<Map<String,Object>> data3; //資料

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        sp_main_se2=findViewById(R.id.sp_main_se2);
        data3=loadData3();//獲取資料
        //初始化介面卡
        adapter3=new SimpleAdapter
       (this,data3,R.layout.sp_main_item,new String[]{"image","name"},
               new int[]{R.id.sp_main_item_img,R.id.tv_main_item_text});

        sp_main_se2.setAdapter(adapter3);
    }

    //獲取資料的方法
    private List<Map<String,Object>> loadData3() {
        List<Book> lists = new BookDAO().list();
        List<Map<String,Object>> maps=new ArrayList<>();
        for (Book list : lists) {
            Map map=new HashMap();
            map.put("image",list.getImage());
            map.put("name",list.getName());
            maps.add(map);
        }
        return maps;
    }

效果如下: 在這裡插入圖片描述

在這裡插入圖片描述