arrayadapter、simpleadapter和baseadapter的一些簡短代碼片段,希望用時友善想起其用法。
原文來源:http://blog.csdn.net/shakespeare001/article/details/7926783
1.arrayadapter
隻可以簡單的顯示一行文本
代碼片段:
arrayadapter<string> adapter = new arrayadapter<string>(
this,
r.layout.item,//隻能有一個定義了id的textview
data);//data既可以是數組,也可以是list集合
2.simpleadapter
可以顯示比較複雜的清單,包括每行顯示圖檔、文字等,但不能對清單進行後期加工(在java代碼中加工),
也是隻是單純的負責顯示(當然可以設計複雜點的布局來顯示複雜清單),例如,每行顯示不同背景等。
list<map<string,object>> mdata= new arraylist<map<string,object>>();;
for(int i =0; i < lengh; i++) {
map<string,object> item = new hashmap<string,object>();
item.put("image", r.drawable.portrait);
item.put("title", mlisttitle[i]);
item.put("text", mliststr[i]);
mdata.add(item);
}
simpleadapter adapter = new simpleadapter(
mdata,
r.layout.item,
new string[]{"image","title","text"},
new int[]{r.id.image,r.id.title,r.id.text});
3.baseadapter
可以實作複雜的清單布局,由于baseadapter是一個抽象類,使用該類需要自己寫一個擴充卡繼承該類,
正是由于繼承了該類,需要我們重寫一些方法,讓我們可以在代碼裡控制清單的樣式,更加靈活。
private class mylistadapter extends baseadapter{
private context mcontext;
private int[] colors=new int[]{0xff626569,0xff4f5257 };
public mylistadapter(context context){
mcontext=context;
}
@override
public int getcount() {
// todo auto-generated method stub
return mlisttext.length;
}
public object getitem(int position) {
return position;
public long getitemid(int position) {
public view getview(int position, view convertview, viewgroup parent) {
imageview image=null; //這些控件可以單獨封裝成一個類(holder),便與優化
textview title=null;
textview content=null;
if(convertview==null){
convertview=layoutinflater.from(mcontext).inflate(r.layout.colorlist, null);
image=(imageview) convertview.findviewbyid(r.id.color_image);
title=(textview) convertview.findviewbyid(r.id.color_title);
content=(textview) convertview.findviewbyid(r.id.color_text);
}
int colorpos=position%colors.length;
convertview.setbackgroundcolor(colors[colorpos]);
title.settext(mlisttitle[position]);
content.settext(mlisttext[position]);
image.setimageresource(r.drawable.portrait);
return convertview;
}
--------------------------下面樣例清單頁的控件單獨封裝成了一個類(holder),便與優化-----
public class mybaseadapter extends baseadapter{
private layoutinflater minflater;
public myadapter(context context){
this.minflater = layoutinflater.from(context);
}
@override
public int getcount() {
// todo auto-generated method stub
return mdata.size();
}
public object getitem(int arg0) {
return null;
}
public long getitemid(int arg0) {
return 0;
public view getview(int position, view convertview, viewgroup parent) {
viewholder holder = null;
if (convertview == null) {
holder=new viewholder();
convertview = minflater.inflate(r.layout.vlist2, null);
holder.img = (imageview)convertview.findviewbyid(r.id.img);
holder.title = (textview)convertview.findviewbyid(r.id.title);
holder.info = (textview)convertview.findviewbyid(r.id.info);
holder.viewbtn = (button)convertview.findviewbyid(r.id.view_btn);
convertview.settag(holder);
}else {
holder = (viewholder)convertview.gettag();
}
holder.img.setbackgroundresource((integer)mdata.get(position).get("img"));
holder.title.settext((string)mdata.get(position).get("title"));
holder.info.settext((string)mdata.get(position).get("info"));
//給每一個清單後面的按鈕添加響應事件
holder.viewbtn.setonclicklistener(new view.onclicklistener() {
@override
public void onclick(view v) {
showinfo();
}
});
return convertview;
------------
public final class viewholder{
public imageview img;
public textview title;
public textview info;
public button viewbtn;
}