Android BaseAdapter 例子

來源:互聯網
上載者:User
BaseAdapter Java代碼  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檔案樣本 Java代碼  <?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>  
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.