Android BaseAdapter 例子

BaseAdapter
 
Java代码  
public class RecentAdapter extends BaseAdapter {  
  
    private class RecentViewHolder {  
        TextView appName;  
        ImageView appIcon;  
        TextView appSize;  
    }  
  
    private List<ResolveInfo> mAppList;  
    private LayoutInflater mInflater;  
    private PackageManager pm;  
  
    public RecentAdapter(Context c, List<ResolveInfo> appList,  
            PackageManager pm) {  
        mAppList = appList;  
        this.pm = pm;  
        mInflater = (LayoutInflater) c  
                .getSystemService(Context.LAYOUT_INFLATER_SERVICE);  
    }  
      
    public void clear(){  
        if(mAppList!=null){  
            mAppList.clear();  
        }  
    }  
  
    public int getCount() {  
        return mAppList.size();  
    }  
  
    @Override  
    public Object getItem(int position) {  
        return mAppList.get(position);  
    }  
  
    @Override  
    public long getItemId(int position) {  
        // TODO Auto-generated method stub  
        return position;  
    }  
  
    public View getView(int position, View convertView, ViewGroup parent) {  
        RecentViewHolder holder;  
        if (convertView == null) {  
            convertView = mInflater.inflate(R.layout.app_info_item, null);  
            holder = new RecentViewHolder();  
            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();  
        }  
        ResolveInfo appInfo = mAppList.get(position);  
        if (appInfo != null) {  
            String labelName = appInfo.loadLabel(pm).toString();  
            if (labelName != null) {  
                holder.appName.setText(labelName);  
            }  
  
            Drawable icon = appInfo.loadIcon(pm);  
            if (icon != null) {  
                holder.appIcon.setImageDrawable(icon);  
            }  
        }  
        return convertView;  
    }  
      
    public void remove(int position){  
        mAppList.remove(position);  
        this.notifyDataSetChanged();  
    }  
  
}  
 
其中两个注意点为:
setTag 用View设置存储数据
notifyDataSetChanged() 告诉View数据更改并刷新
View convertView = mInflater.inflate(R.layout.app_info_item, null)  加载XML Item 示图
 
app_info_item.xml文件示例
 
Java代码  
<?xml version="1.0" encoding="utf-8"?>  
  
<RelativeLayout xmlns: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">  
  
    <ImageView android: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" />  
  
    <TextView android: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" />  
  
    <TextView android: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" />  
    <TextView android: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>  
posted @ 2012-03-31 22:11  与时俱进  阅读(1341)  评论(0编辑  收藏  举报
友情链接:同里老宅院民居客栈