編輯:Android開發實例
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>
可以顯示在的Android任務,通過加載進度條的進展。進度條有兩種形狀。加載欄和加載微調(spinner)。在本章中,我們將討論微調(spinner)。Spinner 用
一、 實現拍照、選擇圖片並裁剪圖片效果 按照之前博客的風格,首先看下實現效果。 二、 uCrop項目應用 想起之前看到
Android中TextView實現的多個可點擊的文本效果
Android應用程序可以在許多不同地區的許多設備上運行。為了使應用程序更具交互性,應用程序應該處理以適合應用程序將要使用的語言環境方面的文字,數字,文件等。在本章中,我