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程序设计有所帮助。