版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_39019735/article/details/73699525
有蛮久没更新了今天来记录一下android的高级控件
AutoCompleteTextView(自动补全):
开发过web项目的小伙伴们应该知道在web项目中实现自动补全是有多麻烦,在安卓开发中实现自动补全真的是太舒服了!!
下面是我写的代码
xml布局:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent"> <AutoCompleteTextView android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/ac_actv" android:completionThreshold="1" /> </LinearLayout>
java代码:
public class AutoActivity extends AppCompatActivity { private AutoCompleteTextView ac_actv; @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_aotu); ac_actv = (AutoCompleteTextView) findViewById(R.id.ac_actv); //定义字符串数组 String sname[]={"张三","张三疯","李四","李四疯"}; //定义适配器 ArrayAdapter arrayAdapter=new ArrayAdapter(this,android.R.layout.simple_list_item_1,sname); //将适配器写到AutoCompleteTextView中 ac_actv.setAdapter(arrayAdapter); } }
还有一个相似的:
MultiAutoCompleteTextView( 该控件可支持选择多个值(在多次输入的情况下),分别用分隔符分开,并且在
每个值选中的时候再次输入值时会自动去匹配。)
下面看看我写的代码:
xml布局:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent"> <MultiAutoCompleteTextView android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/am_mu" android:completionThreshold="1" /> </LinearLayout>
java代码
public class MultiActivity extends AppCompatActivity { private MultiAutoCompleteTextView am_mu; @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_multi); am_mu = (MultiAutoCompleteTextView) findViewById(R.id.am_mu); //定义字符串数组 String sname[]={"张三","张三疯","李四","李四疯"}; //设置适配器 ArrayAdapter arrayAdapter=new ArrayAdapter(this,android.R.layout.simple_list_item_1,sname); //设置分隔符 MultiAutoCompleteTextView.Tokenizer tokenizer=new MultiAutoCompleteTextView.CommaTokenizer(); am_mu.setTokenizer(tokenizer); am_mu.setAdapter(arrayAdapter); } }和AutoCompleteTextView差不蛮多,只是多了一个分隔符,分隔符默认的是逗号,也可以自定义分隔符为其他符号。
再来分享一个控件
spinner(下拉菜单)类似于web中的select下拉菜单
我用spinner实现了一个二级联动的效果,下面看下代码:
xml(布局):
<?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="match_parent"> <Spinner android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/ao_sp" > </Spinner> <Spinner android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/ao_sp2" > </Spinner> </LinearLayout>
java代码:
public class OneActivity extends AppCompatActivity { private Spinner spinner; private Spinner spinner2; private Map<String, List<String>> map; private List<String> hunan; private List<String> hubei; @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_one); spinner = (Spinner) findViewById(R.id.ao_sp); spinner2 = (Spinner) findViewById(R.id.ao_sp2); //定义省份数组 provinces final String provinces[]={"湖南省","湖北省"}; map = new HashMap<String,List<String>>(); hunan = new ArrayList<String>(); hunan.add("长沙市"); hunan.add("株洲市"); map.put("湖南省", hunan); hubei = new ArrayList<String>(); hubei.add("武汉市"); hubei.add("襄阳市"); map.put("湖北省", hubei); //适配器 ArrayAdapter arrayAdapter=new ArrayAdapter(this,android.R.layout.simple_list_item_1,provinces); //设置控件的适配器 spinner.setAdapter(arrayAdapter); spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { private ArrayAdapter arrayAdapter2; @Override public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { List<String> city=map.get(provinces[position]); arrayAdapter2 = new ArrayAdapter(OneActivity.this,android.R.layout.simple_list_item_1,city); spinner2.setAdapter(arrayAdapter2); } @Override public void onNothingSelected(AdapterView<?> parent) { } }); } }还有一个
Listview是比较常用的组件,它以列表的形式展示具体内容,并且能够根据数据的长度自适应显示。
列表的显示需要三个元素:
1.ListVeiw 用来展示列表的View。
2.适配器 用来把数据映射到ListView上的中介。
3.数据 具体的将被映射的字符串,图片,或者基本组件。
根据列表的适配器类型,列表分为三种,ArrayAdapter,SimpleAdapter和SimpleCursorAdapter
其中以ArrayAdapter最为简单,只能展示一行字。SimpleAdapter有最好的扩充性,可以自定义出各种效果。SimpleCursorAdapter可以认为是SimpleAdapter对数据库的简单结合,可以方面的把数据库的内容以列表的形式展示出来。