溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

安卓重要組件#3--ListView的另外2種適配器類ArrayAdapter和SimpleAdapter

發(fā)布時間:2020-07-16 01:48:19 來源:網(wǎng)絡(luò) 閱讀:1145 作者:MEMORY_YI_1 欄目:開發(fā)技術(shù)

上一篇博文講述的ListView的優(yōu)化以及數(shù)據(jù)封裝,接下來我為大家介紹另外2種常見的適配器類。(這次主要介紹的適配器主要是因為我們程序員有時候需要看別人代碼,如果有人用了這2種適配器我們至少要能看懂,實際的還是掌握baseAdapter就可以了)。如果博文哪里的寫的不對或者大家有什么疑問可以給我留言。前2篇博文有介紹的了listView的基本用法,重復(fù)的我在這里就不多說了。這是上面幾篇有關(guān)listView博文的鏈接http://7735447.blog.51cto.com/7725447/1270533

1:ArrayAdapter

(1):首先我們在布局頁面拉一個listView控件到界面來幷填充整個屏幕(記住高度要設(shè)置成固定

(2) :然后在代碼里面找到listView對象并創(chuàng)建一個ArrayAdapter的對象

ListView listView = (ListView) findViewById(R.id.listView1);
ArrayAdapter<T> adapter = new ArrayAdapter<T>(context, textViewResourceId, objects);

(3) :我們來看下這個類需要什么參數(shù),這里說明下ArrayAdapter類所用的范圍比較小,只能以  TextView布局來充當(dāng)行布局,如果我們要做的界面像電話本那樣只有聯(lián)系人時候就可以使用這個適配器,它沒有像baseAdapter那樣需要重寫那么多的方法只需創(chuàng)建一個對象并傳入?yún)?shù)即可.首先來看下第一個參數(shù),這個類需要制定一個范型,這個范型就是我們所需要填寫數(shù)據(jù)的類型,例如String類。第二個參數(shù)是activity類,只要使用主類自身的引用this即可。第三個參數(shù)是就是行布局的id,通過R文件來得到行布局(此行布局只能用TextView,大家創(chuàng)建新布局直接用TextView創(chuàng)建),最后一個參數(shù)就是每個行布局所顯示內(nèi)容的集合,可以傳一個數(shù)組也可以傳一個list容器。具體代碼如下(數(shù)組創(chuàng)建就不放在這里了)

ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, R.layout.list, mStrings);

(4)  :最后吧adapter放入到listView即可

listView.setAdapter(adapter);

大功告成,結(jié)果如下

安卓重要組件#3--ListView的另外2種適配器類ArrayAdapter和SimpleAdapter

2:SimpleAdapter

(1):SimpleAdapter和arrayAdapter類似也是直接創(chuàng)建一個對象

SimpleAdapter adapter=new SimpleAdapter(this, data, R.layout.list, from, to);

第一個參數(shù)一樣是主類自身的引用,第二個參數(shù)要求是一個list容器,里面必須放一個HashMap容器,hashMap容器的鍵類型一定是String

List<HashMap<String, Object>> data=new ArrayList<HashMap<String,Object>>();

然后大家可以寫一個for循環(huán)將每個行布局所需要的數(shù)據(jù)全部放入list容器中

private int[] mImage=new int[]{R.drawable.a,R.drawable.b,R.drawable.c,R.drawable.d};

private double[] mPrice=new double[]{1000,1100,1200,1300};

private String[] mAddress=new String[]{"廈門","深圳","上海","北京"};

for (int i = 0; i < 4; i++) {

HashMap<String, Object> map=new HashMap<String, Object>();

map.put("p_w_picpath",mImage[i]);

map.put("title", "新版HTC"+i);

map.put("price", mPrice[i]);

map.put("sold", "已售:"+(i+1)*100);

map.put("address",mAddress[i]);

data.add(map);

}

第三個參數(shù)為行布局的id(具體的布局如下圖)

安卓重要組件#3--ListView的另外2種適配器類ArrayAdapter和SimpleAdapter

第4個參數(shù)就是map容器里面的鍵值

String[] from=new String[]{"p_w_picpath","title","price","sold","address"};

第5個參數(shù)就是map容器里面鍵所對應(yīng)值

int[] to=new int[]{R.id.p_w_picpathView1,R.id.textView1,R.id.textView2,R.id.textView3,R.id.textView4};

最后不要忘記將adapter放入listView中

listView.setAdapter(adapter);

好了大功告成,結(jié)果如下圖(上面那些控件是為了模仿淘寶頁面做的)

安卓重要組件#3--ListView的另外2種適配器類ArrayAdapter和SimpleAdapter

到這里基本就為大家介紹完了arrayadapter和simpleadapter,完整代碼我會上傳附件。下次我為大家介紹如何在已經(jīng)成型好的listView里面添加和刪除行布局,如何在listView頭部和尾部添加不同于行布局的布局。未完待續(xù)。。。。。。


附件:http://down.51cto.com/data/2363333
向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI