http://www.pin5i.com/showtopic-android-baseadapter-sample.html BaseAdapter - 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文件示例 - <?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>
|