Android BaseAdapter 例子
來源:互聯網
上載者:User
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>