Android Studio 自動文字提示與下拉列表
阿新 • • 發佈:2018-12-10
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;
}
效果如下: