004 Android之其他控件
文章目錄
- ListView
- ListView常用屬性
- ListView基本使用
- ListView動(dòng)態(tài)插入數(shù)據(jù)
- ListView實(shí)現(xiàn)圖文混排
- Adapter
- Adapter(適配器種類(lèi))
- 自定義Adapter的使用
- Spinner下拉列表
- AutoCompleteTextView自動(dòng)補(bǔ)全
ListView
ListView常用屬性
| divider | 設(shè)置分割線(xiàn)的顏色 |
| dividerHeight | 設(shè)置分割線(xiàn)的高度 |
| Scrollbars | 設(shè)置滾動(dòng)條的顯示或者隱藏 |
| Fadescrollbars | 設(shè)置滾動(dòng)條自動(dòng)隱藏或者顯示 |
| Entries | 引用一個(gè)將使用在此ListView里的數(shù)組,若數(shù)組是固定的,使用此屬性將比在程序中寫(xiě)入更為簡(jiǎn)單 |
ListView基本使用
設(shè)置基礎(chǔ)屬性
<ListViewandroid:id="@+id/lv1"android:divider="#FF00FF"android:dividerHeight="10dp"android:layout_width="match_parent"android:layout_height="wrap_content">android:entries="@array/names"</ListView>設(shè)置字符串?dāng)?shù)組
<string-array name="names"><item>Tome</item><item>Andy</item><item>GuiShou</item><item>Jack</item><item>Andy</item><item>Niko</item></string-array>效果如圖:
ListView動(dòng)態(tài)插入數(shù)據(jù)
想要在ListView中動(dòng)態(tài)插入數(shù)據(jù),需要下面幾個(gè)步驟
什么是適配器
適配器是數(shù)據(jù)和視圖間的橋梁,它負(fù)責(zé)把數(shù)據(jù)所提供的內(nèi)容顯示到視圖所定義的外觀中
示例代碼如下:
private void InitListView() {//獲取界面對(duì)象ListView listview=findViewById(R.id.lv1);//準(zhǔn)備數(shù)據(jù)源String data[]={"上海","北京","廣州","武漢","三亞","成都","南昌","廈門(mén)","福建","海口","南昌"};//創(chuàng)建適配器ArrayAdapter<String> adaper=new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,android.R.id.text1,data);//將適配器和ListView關(guān)聯(lián)listview.setAdapter(adaper);}實(shí)際效果如圖:
ListView實(shí)現(xiàn)圖文混排
首先新建一個(gè)layout文件,實(shí)現(xiàn)一個(gè)單一的ListView樣式,代碼如下:
<?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_margin="6dp"android:layout_height="match_parent"><ImageViewandroid:id="@+id/logo"android:layout_margin="5dp"android:src="@mipmap/ic_launcher"android:layout_width="wrap_content"android:layout_height="wrap_content" /><LinearLayoutandroid:orientation="vertical"android:layout_width="wrap_content"android:layout_height="wrap_content"><TextViewandroid:id="@+id/title"android:text="王者榮耀"android:textSize="20dp"android:layout_width="wrap_content"android:layout_height="wrap_content" /><TextViewandroid:id="@+id/version"android:text="版本:1.8.8"android:layout_width="wrap_content"android:layout_height="wrap_content" /><TextViewandroid:id="@+id/size"android:text="大小:1998MB"android:layout_width="wrap_content"android:layout_height="wrap_content" /></LinearLayout><Buttonandroid:id="@+id/btn1"android:layout_margin="5dp"android:text="卸載應(yīng)用"android:layout_width="wrap_content"android:layout_height="wrap_content" /> </LinearLayout>預(yù)覽效果如圖:
接著編寫(xiě)JAVA代碼
private void InitListView() {//獲取界面對(duì)象ListView listview=findViewById(R.id.lv1);//準(zhǔn)備數(shù)據(jù)源List<Map<String,Object>> maplist=new ArrayList<>();Map<String,Object> map1=new HashMap<>();map1.put("logo",R.mipmap.ic_launcher);map1.put("title","王者榮耀");map1.put("version","1.8.8");map1.put("size","1178M");Map<String,Object> map2=new HashMap<>();map2.put("logo",R.mipmap.ic_launcher);map2.put("title","爐石傳說(shuō)");map2.put("version","2.8.8");map2.put("size","1878M");Map<String,Object> map3=new HashMap<>();map3.put("logo",R.mipmap.ic_launcher);map3.put("title","極品飛車(chē)");map3.put("version","2.8.8");map3.put("size","2478M");maplist.add(map1);maplist.add(map2);maplist.add(map3);//創(chuàng)建適配器SimpleAdapter adaper=new SimpleAdapter(this,maplist,R.layout.list_item,new String[]{"logo","title","version","size"},new int[]{R.id.logo,R.id.title,R.id.version,R.id.size});//將適配器和ListView關(guān)聯(lián)listview.setAdapter(adaper);}實(shí)現(xiàn)效果如圖:
Adapter
Adapter(適配器種類(lèi))
自定義Adapter的使用
之前我們已經(jīng)用過(guò)ArrayAdapter和SimpleAdapter,現(xiàn)在來(lái)學(xué)習(xí)一下自定義自定義Adapter的使用。
首先創(chuàng)建一個(gè)類(lèi),繼承自BaseAdapter,
[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來(lái)直接上傳(img-jKqLM4HU-1623032124581)(004 Android之其他控件.assets/1622808098021.png)]
BaseAdapter是個(gè)抽象類(lèi),需要重寫(xiě)這個(gè)類(lèi)下面的方法
@Overridepublic int getCount() {return mList.size();}@Overridepublic Object getItem(int i) {return mList.get(i);}@Overridepublic long getItemId(int i) {return i;}@Overridepublic View getView(int i, View view, ViewGroup viewGroup) {//輸出日志Log.d("GuiShou","位置"+i+"view"+view);//加載一個(gè)列表項(xiàng)的布局文件,獲取界面對(duì)象//獲取布局管理器LayoutInflater layoutInflater=LayoutInflater.from(mContext);View iview=layoutInflater.inflate(R.layout.list_item,null);//將數(shù)據(jù)添加到布局對(duì)象中Map<String,Object> map=mList.get(i);int resid= (int)map.get("logo");String version =(String)map.get("version");String title=(String)map.get("title");String Size=(String)map.get("size");//獲取界面對(duì)象ImageView ilogo=iview.findViewById(R.id.logo);TextView ititle=iview.findViewById(R.id.showTitle);TextView iversion=iview.findViewById(R.id.version);TextView isize=iview.findViewById(R.id.size);//將數(shù)據(jù)設(shè)置到界面上ilogo.setImageResource(resid);ititle.setText(title);iversion.setText(version);isize.setText(Size);//返回對(duì)象return iview;}在類(lèi)內(nèi)創(chuàng)建兩個(gè)成員變量,并填寫(xiě)構(gòu)造方法,用于將數(shù)據(jù)傳輸?shù)浇缑?/p> private List<Map<String,Object>> mList;private Context mContext;public MyAdapter(List<Map<String,Object>> mList,Context mContext) {this.mList=mList;this.mContext=mContext;}
然后創(chuàng)建適配器關(guān)聯(lián)ListView即可
//創(chuàng)建適配器MyAdapter adaper=new MyAdapter(maplist,this);//將適配器和ListView關(guān)聯(lián)listview.setAdapter(adaper);Spinner下拉列表
Spinner和ListView很相似,使用步驟都差不多
<Spinnerandroid:id="@+id/spinner"android:layout_width="match_parent"android:layout_height="wrap_content"></Spinner>首先準(zhǔn)備控件,接著編寫(xiě)代碼,關(guān)聯(lián)適配器
private void InitSpinner() {//自己準(zhǔn)備一個(gè)下拉列表final String[] strings={"北京","上海","廣州","深圳"};//獲取控件對(duì)象Spinner spinner=(Spinner)findViewById(R.id.spinner);//創(chuàng)建適配器ArrayAdapter<String> adapter=new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,android.R.id.text1,strings);//關(guān)聯(lián)適配器spinner.setAdapter(adapter);//設(shè)置監(jiān)聽(tīng)器spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {@Overridepublic void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {String sel=strings[i];Toast.makeText(MainActivity.this,sel,Toast.LENGTH_LONG);}@Overridepublic void onNothingSelected(AdapterView<?> adapterView) {}});}實(shí)際效果如圖:
AutoCompleteTextView自動(dòng)補(bǔ)全
控件代碼如下:
<AutoCompleteTextViewandroid:id="@+id/auto1"android:completionThreshold="1"android:layout_width="match_parent"android:layout_height="wrap_content" />completionThreshold屬性表示輸入第幾個(gè)字符開(kāi)始提示。
Activity設(shè)置代碼如下:
private void InitAutoText() {//獲取界面對(duì)象AutoCompleteTextView actv=(AutoCompleteTextView)findViewById(R.id.auto1);//準(zhǔn)備數(shù)據(jù)源String[] objects=new String[]{"hello1","hello2","hello3","world"};//創(chuàng)建適配器 設(shè)置數(shù)據(jù)//創(chuàng)建適配器ArrayAdapter<String> adapter=new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,android.R.id.text1,objects);//關(guān)聯(lián)適配器actv.setAdapter(adapter);}實(shí)際效果如圖:
總結(jié)
以上是生活随笔為你收集整理的004 Android之其他控件的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 003 Android之线性布局与基础控
- 下一篇: 005 Android之数据存储