Android中BaseAdapter用法示例
本文实例讲述了Android中BaseAdapter用法。分享给大家供大家参考,具体如下:
概述:
BaseAdapter就Android应用程序中经常用到的基础数据适配器,它的主要用途是将一组数据传到像ListView、Spinner、Gallery及GridView等UI显示组件,它是继承自接口类Adapter
BaseAdapter
Java代码:
publicclassRecentAdapterextendsBaseAdapter{ privateclassRecentViewHolder{ TextViewappName; ImageViewappIcon; TextViewappSize; } privateList<ResolveInfo>mAppList; privateLayoutInflatermInflater; privatePackageManagerpm; publicRecentAdapter(Contextc,List<ResolveInfo>appList, PackageManagerpm){ mAppList=appList; this.pm=pm; mInflater=(LayoutInflater)c .getSystemService(Context.LAYOUT_INFLATER_SERVICE); } publicvoidclear(){ if(mAppList!=null){ mAppList.clear(); } } publicintgetCount(){ returnmAppList.size(); } @Override publicObjectgetItem(intposition){ returnmAppList.get(position); } @Override publiclonggetItemId(intposition){ //TODOAuto-generatedmethodstub returnposition; } publicViewgetView(intposition,ViewconvertView,ViewGroupparent){ RecentViewHolderholder; if(convertView==null){ convertView=mInflater.inflate(R.layout.app_info_item,null); holder=newRecentViewHolder(); holder.appName=(TextView)convertView.findViewById(R.id.app_name); holder.appIcon=(ImageView)convertView .findViewById(R.id.app_icon); holder.appSize=(TextView)convertView.findViewById(R.id.app_size); convertView.setTag(holder); }else{ holder=(RecentViewHolder)convertView.getTag(); } ResolveInfoappInfo=mAppList.get(position); if(appInfo!=null){ StringlabelName=appInfo.loadLabel(pm).toString(); if(labelName!=null){ holder.appName.setText(labelName); } Drawableicon=appInfo.loadIcon(pm); if(icon!=null){ holder.appIcon.setImageDrawable(icon); } } returnconvertView; } publicvoidremove(intposition){ mAppList.remove(position); this.notifyDataSetChanged(); } }
其中两个注意点为:
setTag用View设置存储数据
notifyDataSetChanged()告诉View数据更改并刷新
ViewconvertView=mInflater.inflate(R.layout.app_info_item,null) 加载XMLItem视图
app_info_item.xml文件示例:
xml代码:
<?xmlversion="1.0"encoding="utf-8"?> <RelativeLayoutxmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent"android:layout_height="wrap_content" android:layout_gravity="center_vertical"android:minHeight="?android:attr/listPreferredItemHeight"> <ImageViewandroid:id="@+id/app_icon"android:layout_width="@android:dimen/app_icon_size" android:layout_height="@android:dimen/app_icon_size" android:layout_alignParentLeft="true"android:paddingLeft="6dip" android:paddingTop="6dip"android:paddingBottom="6dip" android:scaleType="fitCenter"/> <TextViewandroid:id="@+id/app_name"android:layout_width="wrap_content" android:layout_height="wrap_content"android:textAppearance="?android:attr/textAppearanceLarge" android:textColor="?android:attr/textColorPrimary" android:layout_toRightOf="@id/app_icon"android:paddingLeft="6dip" android:paddingTop="6dip"/> <TextViewandroid:id="@+id/app_description" android:layout_width="wrap_content"android:layout_height="wrap_content" android:textAppearance="?android:attr/textAppearanceSmall" android:layout_below="@+id/app_name"android:layout_toRightOf="@id/app_icon" android:paddingLeft="6dip"android:paddingBottom="6dip"/> <TextViewandroid:id="@+id/app_size"android:layout_width="wrap_content" android:layout_height="wrap_content"android:textAppearance="?android:attr/textAppearanceSmall" android:layout_alignParentRight="true"android:layout_below="@+id/app_name" android:paddingRight="6dip"android:maxLines="1"/> </RelativeLayout>
更多关于Android相关内容感兴趣的读者可查看本站专题:《Android控件用法总结》、《Android视图View技巧总结》、《Android操作SQLite数据库技巧总结》、《Android操作json格式数据技巧总结》、《Android数据库操作技巧总结》、《Android文件操作技巧汇总》、《Android编程开发之SD卡操作方法汇总》、《Android开发入门与进阶教程》及《Android资源操作技巧汇总》
希望本文所述对大家Android程序设计有所帮助。