原文地址
http://www.pin5i.com/showtopic-android-baseadapter-sample.html BaseAdapter
  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(安卓): Spinner初始化时填充默认值数据
  4. Android(安卓): Spinner初始化时填充默认值数据
  5. android构建复合组件
  6. Android(安卓)从网上获取图片
  7. android studio   Listview简单实例
  8. SharedPreferences 数据存储
  9. [转载]Android(安卓)by example : MVVM +Data Binding -> View (

随机推荐

  1. Android简单登录界面
  2. [android]控件ProgressBar/ProgressDialo
  3. layout布局属性
  4. Android(安卓)Studio 工程依赖问题
  5. AndroidRelativelayout,linearlayout独有
  6. android 3G pppd 调试记录。
  7. Android # 基础汇总
  8. 保证editView大小不变防止输入过多变形以
  9. Android百度地图相关内容汇总
  10. android 开发工具