1創(chuàng)建項(xiàng)目
2完成布局文件
來(lái)到左側(cè)項(xiàng)目文件夾目錄中的res-layout下,打開activity-layout.xml
屏幕中央界面如下圖:
點(diǎn)擊紅框所表明的按鈕予颤,進(jìn)入該xml文件的代碼編輯頁(yè)面挠乳,在這里我們通過(guò)編寫不同代碼冰悠,可以控制界面的顯示效果鸟缕。
在代碼編輯頁(yè)面中鸭限,通過(guò)以下代碼,可以生成一個(gè)ListView舷胜。
"http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
android:id="@+id/lv"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
再點(diǎn)擊下圖中紅框所示位置娩践,查看預(yù)覽效果:
3給ListView設(shè)置數(shù)據(jù)
3.1找到控件
在項(xiàng)目的src文件夾中的包下活翩,找到并打開MainActivity.Java文件烹骨,然后在onCreate方法中,寫下面的代碼:
//1找到控件
ListViewlv= (ListView)findViewById(R.id.lv);
如下圖:
報(bào)錯(cuò)的話材泄,鼠標(biāo)點(diǎn)擊報(bào)錯(cuò)的代碼處沮焕,按下ctrl+1,進(jìn)行快速修復(fù)拉宗。
3.2生成一些數(shù)據(jù)方便展示
接下來(lái)生成一些數(shù)據(jù)峦树,用來(lái)展示。寫下面的代碼:
//2生成一些數(shù)據(jù)旦事,方便到時(shí)候展示
String[]data=newString[]{"張三","李四","王五","趙六","錢七"};
如下圖:
3.3設(shè)置數(shù)據(jù)源
接下來(lái)設(shè)置數(shù)據(jù)源魁巩,寫代碼如下:
//3設(shè)置數(shù)據(jù)源
//3.1通過(guò)setAdapter來(lái)進(jìn)行設(shè)置
lv.setAdapter(adapter);
如下圖:
發(fā)現(xiàn)lv.setAdapter(adapter)報(bào)錯(cuò)。報(bào)錯(cuò)的原因是:adpater還沒(méi)創(chuàng)建出來(lái)姐浮。
3.4創(chuàng)建adapter
Adapter其實(shí)是一個(gè)數(shù)據(jù)適配器谷遂,listview控件就是通過(guò)adapter來(lái)設(shè)置數(shù)據(jù)的。我們這里創(chuàng)建一個(gè)代表adapter的類Class卖鲤。
先右鍵包名肾扰,然后選擇”New”-“class”畴嘶。如下圖
然后給Class起名為:MyAdapter,再點(diǎn)擊finfish集晚。如下圖:
右邊的窗口展示的代碼如下圖:
這里讓它繼承自BaseAdapter(這是所有種類的adapter中最頻繁使用的一種)窗悯,代碼如下:
publicclassMyAdapterextendsBaseAdapter{
}
如下圖:
發(fā)現(xiàn)報(bào)錯(cuò),使用ctrl+1進(jìn)行快速修復(fù)偷拔。如下圖:
還是發(fā)現(xiàn)報(bào)錯(cuò)蒋院,使用ctrl+1進(jìn)行快速修復(fù)。如下圖:
修復(fù)后發(fā)現(xiàn)多增加了一些方法莲绰,如下圖:
在這里對(duì)這些方法進(jìn)行介紹:
getCount()的返回結(jié)果代表ListView有多少條數(shù)據(jù)悦污。
getItem和getItemId暫時(shí)不用處理。
getView()的返回結(jié)果代表ListView對(duì)應(yīng)的某個(gè)位置上的那個(gè)條目的視圖控件钉蒲,我們每個(gè)條目長(zhǎng)成什么樣子就是由該方法進(jìn)行控制的切端。
回到MainActivity.Java文件。我們來(lái)解決先前的報(bào)錯(cuò)顷啼。報(bào)錯(cuò)如下圖:
我們這個(gè)時(shí)候已經(jīng)把a(bǔ)dapter創(chuàng)建好了踏枣,直接new一個(gè)MyAdapter出來(lái)。代碼如下:
運(yùn)行一下查看效果钙蒙,發(fā)現(xiàn)什么都沒(méi)有茵瀑,如下圖:
那是因?yàn)槲覀冞€沒(méi)有把MyAdapter中的那幾個(gè)方法進(jìn)行設(shè)置。
接下來(lái)打開MyAdapter.Java躬厌,把那幾個(gè)自動(dòng)生成的方法來(lái)寫一下马昨。
首先,我們需要拿到上下文環(huán)境和第3.2步中生成的數(shù)據(jù)扛施,才能夠完成那些方法的邏輯鸿捧。
在MyAdapter中通過(guò)寫這些代碼:
privateContextmyContext;
privateString[]myData;
//利用該方法,拿到上下文和數(shù)據(jù)
publicMyAdapter(Context
context,String[] data) {
//TODOAuto-generated constructor stub
myContext= context;
myData= data;
}
如下圖:
PS:報(bào)錯(cuò)的話疙渣,按ctrl+1進(jìn)行快速修復(fù)匙奴。
拿到數(shù)據(jù)后,就可以開始設(shè)置了:
getCount方法中這樣寫:
getItem和getItemId方法不用設(shè)置
getView方法中這樣寫:
//創(chuàng)建一個(gè)文本
TextView textView =newTextView(myContext);
//設(shè)置文本
textView.setText(myData[position]);
//設(shè)置高度
textView.setHeight(40);
//設(shè)置居中
textView.setGravity(Gravity.CENTER);
//將該文本控件
returntextView;
如下圖:
這個(gè)時(shí)候妄荔,我們已經(jīng)完成了adapter數(shù)據(jù)源的設(shè)置了泼菌。
再回到MainActivity.Java中,發(fā)現(xiàn)報(bào)錯(cuò)了啦租,如下圖:
改一下報(bào)錯(cuò)的地方哗伯。修改為下圖所示:
3.5運(yùn)行并進(jìn)行測(cè)試
運(yùn)行項(xiàng)目到模
??\\\\u???