Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1072248
  • 博文数量: 403
  • 博客积分: 10272
  • 博客等级: 上将
  • 技术积分: 4407
  • 用 户 组: 普通用户
  • 注册时间: 2012-02-24 14:22
文章分类

全部博文(403)

文章存档

2012年(403)

分类: 嵌入式

2012-04-04 18:46:31

BaseAdapter
 
Java代码  
public class RecentAdapter extends BaseAdapter {  
  
    private class RecentViewHolder {  
        TextView appName;  
        ImageView appIcon;  
        TextView appSize;  
    }  
  
    private List mAppList;  
    private LayoutInflater mInflater;  
    private PackageManager pm;  
  
    public RecentAdapter(Context c, List 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代码  
 
  
    android:layout_width="fill_parent" android:layout_height="wrap_content"  
    android:layout_gravity="center_vertical" android:minHeight="?android:attr/listPreferredItemHeight">  
  
   
        android:layout_height="@android:dimen/app_icon_size"  
        android:layout_alignParentLeft="true" android:paddingLeft="6dip"  
        android:paddingTop="6dip" android:paddingBottom="6dip"  
        android:scaleType="fitCenter" />  
  
   
        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" />  
  
   
        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" />  
   
        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" />  
  
 
阅读(999) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~