• 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>  
  • 相关阅读:
    EF基于方法的查询语法
    &,^,|,的简化计算与理解
    会计中阿拉伯数字变数字繁体大写
    接口对接请求方法
    经验总结之Android framework开发
    android开机过程简单描述
    为什么一个类的全局变量默认以m开头?
    使用DataOutputStream写入int类型数字不能显示
    20151128学习总结
    sky简介
  • 原文地址:https://www.cnblogs.com/top5/p/2427705.html
Copyright © 2020-2023  润新知