Android適配器之ArrayAdapter、SimpleAdapter和BaseAdapter的簡單用法與有用代碼片段
ArrayAdapter、SimpleAdapter和BaseAdapter的一些簡短代碼片段,希望用時(shí)方便想起其用法。
原文來源:http://blog.csdn.net/shakespeare001/article/details/7926783
1.ArrayAdapter
只可以簡單的顯示一行文本
代碼片段:
[java]?view plaincopy
ArrayAdapter<String>?adapter?=?new?ArrayAdapter<String>(?? ????????????????this,?? ????????????????R.layout.item,?? ????????????????data);?? 2.SimpleAdapter
可以顯示比較復(fù)雜的列表,包括每行顯示圖片、文字等,但不能對列表進(jìn)行后期加工(在java代碼中加工),
也是只是單純的負(fù)責(zé)顯示(當(dāng)然可以設(shè)計(jì)復(fù)雜點(diǎn)的布局來顯示復(fù)雜列表),例如,每行顯示不同背景等。
代碼片段:
[java]?view plaincopy
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(?? ????????????????this,?? ????????????????mData,?? ????????????????R.layout.item,?????? ????????????????new?String[]{"image","title","text"},?? ????????????????new?int[]{R.id.image,R.id.title,R.id.text});?????
3.BaseAdapter
可以實(shí)現(xiàn)復(fù)雜的列表布局,由于BaseAdapter是一個(gè)抽象類,使用該類需要自己寫一個(gè)適配器繼承該類,
正是由于繼承了該類,需要我們重寫一些方法,讓我們可以在代碼里控制列表的樣式,更加靈活。
代碼片段:
[java]?view plaincopy
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()?{???? ?????????????? ????????????return?mListText.length;???? ????????}???? ???? ????????@Override???? ????????public?Object?getItem(int?position)?{???? ?????????????? ????????????return?position;???? ????????}???? ???? ????????@Override???? ????????public?long?getItemId(int?position)?{???? ?????????????? ????????????return?position;???? ????????}???? ???? ????????@Override???? ????????public?View?getView(int?position,?View?convertView,?ViewGroup?parent)?{???? ????????????ImageView?image=null;???? ????????????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;???? ????????}???? ???????????? ????}???? ?? --------------------------下面樣例列表頁的控件單獨(dú)封裝成了一個(gè)類(Holder),便與優(yōu)化-----?? ?? ?? ?public?class?MyBaseAdapter?extends?BaseAdapter{?? ??????? ???????????private?LayoutInflater?mInflater;?? ????????????public?MyAdapter(Context?context){?? ???????????????this.mInflater?=?LayoutInflater.from(context);?? ??????????}?? ????????????@Override?? ???????????public?int?getCount()?{?? ?????????????????? ????????????????return?mData.size();?? ????????????}?? ??????? ????????????@Override?? ????????????public?Object?getItem(int?arg0)?{?? ?????????????????? ????????????????return?null;?? ???????????}?? ??????? ????????????@Override?? ????????????public?long?getItemId(int?arg0)?{?? ?????????????????? ????????????????return?0;?? ????????????}?? ??????? ????????????@Override?? ????????????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;?? ????????}??
總結(jié)
以上是生活随笔為你收集整理的【Android】Android适配器之ArrayAdapter、SimpleAdapter和BaseAdapter的简单用法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。