1. public class RecentAdapter extends BaseAdapter {
  2. private class RecentViewHolder {
  3. TextView appName;
  4. ImageView appIcon;
  5. TextView appSize;
  6. }
  7. private List<ResolveInfo> mAppList;
  8. private LayoutInflater mInflater;
  9. private PackageManager pm;
  10. public RecentAdapter(Context c, List<ResolveInfo> appList,
  11. PackageManager pm) {
  12. mAppList = appList;
  13. this.pm = pm;
  14. mInflater = (LayoutInflater) c
  15. .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
  16. }
  17. public void clear(){
  18. if(mAppList!=null){
  19. mAppList.clear();
  20. }
  21. }
  22. public int getCount() {
  23. return mAppList.size();
  24. }
  25. @Override
  26. public Object getItem(int position) {
  27. return mAppList.get(position);
  28. }
  29. @Override
  30. public long getItemId(int position) {
  31. // TODO Auto-generated method stub
  32. return position;
  33. }
  34. public View getView(int position, View convertView, ViewGroup parent) {
  35. RecentViewHolder holder;
  36. if (convertView == null) {
  37. convertView = mInflater.inflate(R.layout.app_info_item, null);
  38. holder = new RecentViewHolder();
  39. holder.appName = (TextView) convertView.findViewById(R.id.app_name);
  40. holder.appIcon = (ImageView) convertView
  41. .findViewById(R.id.app_icon);
  42. holder.appSize = (TextView) convertView.findViewById(R.id.app_size);
  43. convertView.setTag(holder);
  44. } else {
  45. holder = (RecentViewHolder) convertView.getTag();
  46. }
  47. ResolveInfo appInfo = mAppList.get(position);
  48. if (appInfo != null) {
  49. String labelName = appInfo.loadLabel(pm).toString();
  50. if (labelName != null) {
  51. holder.appName.setText(labelName);
  52. }
  53. Drawable icon = appInfo.loadIcon(pm);
  54. if (icon != null) {
  55. holder.appIcon.setImageDrawable(icon);
  56. }
  57. }
  58. return convertView;
  59. }
  60. public void remove(int position){
  61. mAppList.remove(position);
  62. this.notifyDataSetChanged();
  63. }
  64. }

其中两个注意点为:

setTag 用View设置存储数据

notifyDataSetChanged() 告诉View数据更改并刷新

View convertView = mInflater.inflate(R.layout.app_info_item, null) 加载XML Item 示图

app_info_item.xml文件示例

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3. android:layout_width="fill_parent" android:layout_height="wrap_content"
  4. android:layout_gravity="center_vertical" android:minHeight="?android:attr/listPreferredItemHeight">
  5. <ImageView android:id="@+id/app_icon" android:layout_width="@android:dimen/app_icon_size"
  6. android:layout_height="@android:dimen/app_icon_size"
  7. android:layout_alignParentLeft="true" android:paddingLeft="6dip"
  8. android:paddingTop="6dip" android:paddingBottom="6dip"
  9. android:scaleType="fitCenter" />
  10. <TextView android:id="@+id/app_name" android:layout_width="wrap_content"
  11. android:layout_height="wrap_content" android:textAppearance="?android:attr/textAppearanceLarge"
  12. android:textColor="?android:attr/textColorPrimary"
  13. android:layout_toRightOf="@id/app_icon" android:paddingLeft="6dip"
  14. android:paddingTop="6dip" />
  15. <TextView android:id="@+id/app_description"
  16. android:layout_width="wrap_content" android:layout_height="wrap_content"
  17. android:textAppearance="?android:attr/textAppearanceSmall"
  18. android:layout_below="@+id/app_name" android:layout_toRightOf="@id/app_icon"
  19. android:paddingLeft="6dip" android:paddingBottom="6dip" />
  20. <TextView android:id="@+id/app_size" android:layout_width="wrap_content"
  21. android:layout_height="wrap_content" android:textAppearance="?android:attr/textAppearanceSmall"
  22. android:layout_alignParentRight="true" android:layout_below="@+id/app_name"
  23. android:paddingRight="6dip" android:maxLines="1" />
  24. </RelativeLayout>

更多相关文章

  1. Android bundle传递数据简例
  2. Android 原生SQLite数据库操作实战
  3. android中ListView的分页加载数据实现
  4. android之activity生命周期示例
  5. android异步取数据
  6. Android数据存储路径位置
  7. android中Json数据保存方式
  8. [置顶] Android加载数据过程中的菊花显示
  9. android webview 中网页数据与js交互

随机推荐

  1. Android获取常用辅助方法(获取屏幕高度、
  2. android2.2应用开发之IccCard(sim卡或USIM
  3. Android(安卓)进程管理概述
  4. Android(安卓)Design Library之四:BottomS
  5. Android播放音乐案例分享
  6. Notification探险
  7. 线程-进程间通信(操作系统、java、android
  8. android 通过jdbc访问mysql数据库--(含and
  9. 使用cocos compile -p android -m releas
  10. Android通知栏微技巧一些需要注意的小细