1.AutoCompleteTextView 自动补全文本框:
下面说一下 简单的一个自动补全:
activity_main:
<AutoCompleteTextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/actv_main_auto"
android:completionThreshold="1" //表示当你输入第一个字符时就会弹出提示:
/>
MainActivity:
AutoCompleteTextView autoCompleteTextView= (AutoCompleteTextView) findViewById(R.id.actv_main_auto);
//获得字符串数组:这是我自动补全中的一些资料:
String data []=getResources().getStringArray(R.array.data);
在values文件夹的Strings下面:
<string-array name="data">
<item>张三峰</item>
<item>Fire</item>
<item>I Got You</item>
<item>Inside Out</item>
<item>East Of Eden</item>
<item>Battle Scars</item>
<item>Counting Star</item>
<item>Five Hundred Miles</item>
<item>All we know</item>
<item>Paris</item>
<item>Roses</item>
<item>Dont Let Me Down</item>
<item>Homesike</item>
<item>Wannabe</item>
</string-array>
//适配器: 布局你也可以用系统自带的布局:
ArrayAdapter adapter=new ArrayAdapter(this,R.layout.item_actve,data);
//给控件设置配置器:
autoCompleteTextView.setAdapter(adapter);
接下来 ,就可以直接在界面的文本框里输入就可以出现自动补全的功能:
MultiAutoCompleteTextView,是 AutoCompleteTextView的加强版,一时就是可以在文本框选了一个之后,再选一个,
与上面代码基本一样,只需要再加上:
//设置多个自动完成文本框的分隔符:默认字符是; ,
MultiAutoCompleteTextView.Tokenizer tokenizer=new MultiAutoCompleteTextView.CommaTokenizer();
multiautoCompleteTextView.setTokenizer(tokenizer);
2.Spinner 下拉框:下面给大家说一下用下拉框实现的简单的二级联动:
activity_second layout布局文件':
<Spinner
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/sp_second_spinner01"
>
</Spinner>
<Spinner
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/sp_second_spinner02"
>
</Spinner>
SecondActivity中:
public class SecondActivity extends AppCompatActivity {
private Spinner spinner1;
private Spinner spinner2;
private String sheng;
private Map<String, String[]> mp;
//这是secondactivity继承之后要重写的方法:
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_second); //加载界面
spinner1 = (Spinner) findViewById(R.id.sp_second_spinner01);
spinner2 = (Spinner) findViewById(R.id.sp_second_spinner02);
//获得省份:
final String province []=getResources().getStringArray(R.array.Province);
//获得市区:
String hunan [] = getResources().getStringArray(R.array.hunan);
String guangxi [] = getResources().getStringArray(R.array.guangxi);
String guangdong []= getResources().getStringArray(R.array.guangdong);
String zhejiang []= getResources().getStringArray(R.array.zhejiang);
//配置器: 这是我的布局:你可以使用的系统布局:
ArrayAdapter adapter=new ArrayAdapter(this,R.layout.item_actve,province);
我的item_actve布局文件:
<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#00ff1e"
android:textColor="#ffffff"
>
</TextView>
//给控件添加配置器:
spinner1.setAdapter(adapter);
//将他们放入map里面:
mp = new HashMap<>();
mp.put(province[0], hunan);
mp.put(province[1], guangxi);
mp.put(province[2], guangdong);
mp.put(province[3], zhejiang);
//给spinner设置选择事件
spinner1.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
sheng=province[position];
geishi(sheng);
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
});
}
public void geishi(String sheng){
Toast.makeText(SecondActivity.this,"省份:"+sheng,Toast.LENGTH_SHORT).show();
String shi []=mp.get(sheng);
//配置器:
ArrayAdapter adapter2=new ArrayAdapter(this,R.layout.item_actve,shi);
//给控件添加配置器:
spinner2.setAdapter(adapter2);
}
这是我values里面Strings的一些文件:二级联动所用到的资料:
<string-array name="Province">
<item>湖南省</item>
<item>广西省</item>
<item>广东省</item>
<item>浙江省</item>
</string-array>
<string-array name="hunan">
<item>长沙市</item>
<item>株洲市</item>
<item>湘潭市</item>
<item>邵阳市</item>
<item>衡阳市</item>
<item>永州市</item>
<item>岳阳市</item>
</string-array>
<string-array name="guangxi">
<item>南宁市</item>
<item>桂林市</item>
<item>全州市</item>
<item>北海市</item>
<item>梧州市</item>
<item>柳州市</item>
<item>防城港市</item>
</string-array>
<string-array name="guangdong">
<item>广州市</item>
<item>深圳市</item>
<item>佛山市</item>
<item>中山市</item>
<item>潮州市</item>
<item>东莞市</item>
<item>龙华市</item>
</string-array>
<string-array name="zhejiang">
<item>杭州市</item>
<item>舟山市</item>
<item>金华市</item>
<item>宁波市</item>
<item>温州市</item>
<item>嘉兴市</item>
<item>湖州市</item>
</string-array>
3.ListView:
在android开发中ListView是比较常用的组件,它以列表的形式展示具体内容,并且能够根据数据的长度自适应显示。
<ListView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/lv_main_listview"
></ListView>
MainActivity中的代码:
//获得控件
ListView listView= (ListView) findViewById(R.id.lv_main_listview);
//设置数据:
String titles[]={"愤怒的老鸟","Tomcat","KFC","大黑牛","旺财","中国龙","北京烤鸭","蜡笔小新","7秒小金鱼","九尾狐"};
//设置适配器:
ArrayAdapter adapter2=new ArrayAdapter(this,R.layout.item_actv,titles);
//给控件设置适配器:
listView.setAdapter(adapter);
注意:现在的listview只是一排字符,如果在字符的前面加一些图片,则需要用到SimpleAdapter 简单适配器:
下面来说一下简单适配器
这些是我的项目中的一些图片:
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};
//集合:将图片与标题放入集合中:
List<Map<String,Object>> list=new ArrayList<>();
for (int i = 0; i < titles.length; i++) {
Map<String,Object> mp=new HashMap<>();
mp.put("image",images[i]);
mp.put("title",titles[i]);
list.add(mp);
}
//设置简单配置起=器 下面用到的是系统自带的布局:
SimpleAdapter simpleAdapter=new SimpleAdapter(this,list,android.R.layout.activity_list_item,new String[]{"image","title"},new int[]{android.R.id.icon,android.R.id.text1});
//给listview设置简单配置器:
listView.setAdapter(simpleAdapter);
//给listview设置点击事件:
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Toast.makeText(MainActivity.this,"你选择的是:"+titles[position],Toast.LENGTH_SHORT).show();
}
});
好了!!!