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. mybatisplus的坑 insert标签insert into select无参数问题的解决
  2. python起点网月票榜字体反爬案例
  3. Android(安卓)bundle传递数据简例
  4. 【Android】自动提示匹配之AutoCompleteTextView
  5. Android(安卓)原生SQLite数据库操作实战
  6. Android中LiveData+Room+Paging简单实现步骤
  7. android java 3des加密 ECB/CBC
  8. Android(安卓)Studio更改SDK或者JDK路径
  9. Android全透明Activity示例

随机推荐

  1. 【可能有点用的记录】Android(安卓)Studi
  2. android完全退出应用程序
  3. android 丛书
  4. GET Android(安卓)摸拟器 IP.
  5. Android(安卓)复习笔记之图解TextView类
  6. android:configChanges="orientation|key
  7. Android各个版本API的区别
  8. [Android(安卓)Pro] 注册 Google Play 开
  9. 2月收藏
  10. Android控件及API说明(二)