天天看點

【Android】Android擴充卡之ArrayAdapter、SimpleAdapter和BaseAdapter的簡單用法 Android擴充卡之ArrayAdapter、SimpleAdapter和BaseAdapter的簡單用法與有用代碼片段

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;  

        }  

繼續閱讀