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();}@Overridepublic Object getItem(int position) {return mAppList.get(position);}@Overridepublic long getItemId(int position) {// TODO Auto-generated method stubreturn 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>

更多相关文章

  1. android导出sqllist数据库要先配置adb.exe加到环境变量里
  2. Android:ListView数据异步加载、Handler、AsyncTask
  3. Android ListView组合CheckBox实现多选获取数据
  4. Android开发学习——android与服务器端数据交互
  5. Android解析Excel文档完整示例
  6. android sqlite3 数据库升级,加字段
  7. android 读取json数据(遍历JSONObject和JSONArray
  8. Android listView FastScroll 快速查询数据
  9. 柱状图以及饼图进行数据统计

随机推荐

  1. Android隐藏标题栏的四种方法
  2. Android 电源系列小结s
  3. Android单词查找器
  4. Android 显示/隐藏 应用图标
  5. Android(Java):滑动删除实现——重写onTo
  6. 关于Android调用系统Action录制视频
  7. Android数据存储路径位置
  8. android客户端加密代码
  9. Android:设置APN为cmnet源码 ----android
  10. android 年月日选择器(可选择年,年月,年月日