Android 適配器BaseAdapter詳解
來源:程序員人生 發(fā)布時間:2014-12-25 08:08:09 閱讀次數(shù):3358次
public int getCount()
數(shù)據(jù)域大小方法
public Object getItem(int arg0)
返回每一個Item的數(shù)據(jù)據(jù)
public long getItemId(int arg0)
返回每一個Item的ID
View getView(int arg0, View arg1, ViewGroup arg2)
最重要的是:重繪視圖,調(diào)用次數(shù)是由第1個方法肯定的。最后將視圖返回。
注意:有些控件必須設(shè)置成沒有獲利焦點(diǎn)與點(diǎn)擊。
這幾個方法寫的內(nèi)容基本不變,具有參考價(jià)值。
2.重寫數(shù)據(jù)區(qū)域使用ArrayList實(shí)現(xiàn)List。
先封裝1個數(shù)據(jù)類,再將這個數(shù)據(jù)類裝進(jìn)List集合中。
3.綁定數(shù)據(jù)區(qū)域與視圖區(qū)域
setListAdapter(MyAdapter);
注:MyAdapter是自定義的Adapter。
其中的getview方法的3個參數(shù)是這樣的
/**
* @param position position就是位置從0開始
* @param convertView convertView是Spinner,ListView中每項(xiàng)要顯示的view
* @param parent parent就是父窗體了,也就是Spinner,ListView,GridView了
* @return 通常return 的view也就是convertView
* 繪制的內(nèi)容均在此實(shí)現(xiàn)
*/
abstract public View getView(int position, View convertView, ViewGroup parent);
調(diào)用getView()逐1繪制每行。如果你的 getCount()返回值是0的話,列表將不顯示,一樣return 1,就只顯示1行。
系統(tǒng)顯示列表時,首先實(shí)例化1個適配器(這里將實(shí)例化自定義的適配器)。
當(dāng)手動完成適配時,必須手動映照數(shù)據(jù),這需要重寫getView()方 法。
系統(tǒng)在繪制列表的每行的時候?qū)⒄{(diào)用此方法。getView()有3個參數(shù),position表示將顯示的是第幾行,covertView是從布局文 件中inflate來的布局。
我們用LayoutInflater的方法將定義好的item.xml文件提取成View實(shí)例用來顯示。
然后將xml文件中 的各個組件實(shí)例化(簡單的findViewById()方法)。這樣即可以將數(shù)據(jù)對應(yīng)到各個組件上了。
但是按鈕為了響應(yīng)點(diǎn)擊事件,需要為它添加點(diǎn)擊監(jiān)聽 器,這樣就可以捕獲點(diǎn)擊事件。至此1個自定義的listView就完成了,
現(xiàn)在讓我們回過頭重新審視這個進(jìn)程。系統(tǒng)要繪制ListView了,他首先取得要 繪制的這個列表的長度,然后開始繪制第1行,怎樣繪制呢?
調(diào)用getView()函數(shù)。在這個函數(shù)里面首先取得1個View(實(shí)際上是1個 ViewGroup),然后再實(shí)例并設(shè)置各個組件,顯示之。好了,繪制完這1行了。那再繪制下1行,直到繪完為止。
生活不易,碼農(nóng)辛苦
如果您覺得本網(wǎng)站對您的學(xué)習(xí)有所幫助,可以手機(jī)掃描二維碼進(jìn)行捐贈