package com.mcxiaoke.apptoolkit.adapter; import android.content.Context; import android.content.pm.PackageManager; import android.graphics.drawable.Drawable; import android.view.View; import android.view.ViewGroup; import android.widget.CheckBox; import android.widget.CompoundButton; import android.widget.ImageView; import android.widget.TextView; import com.mcxiaoke.apptoolkit.AppConfig; import com.mcxiaoke.apptoolkit.R; import com.mcxiaoke.apptoolkit.cache.CacheManager; import com.mcxiaoke.apptoolkit.model.AppInfo; import com.mcxiaoke.apptoolkit.util.Utils; import java.util.List; /** * Project: filemanager * Package: com.com.mcxiaoke.appmanager.adapter * User: com.mcxiaoke * Date: 13-6-10 * Time: 下午5:48 */ public class AppListAdapter extends MultiChoiceArrayAdapter<AppInfo> { private PackageManager mPackageManager; private CacheManager mCacheManager; private int mActivateBgResId; public AppListAdapter(Context context, List<AppInfo> objects) { super(context, objects); mPackageManager = context.getPackageManager(); mCacheManager = CacheManager.getInstance(); mActivateBgResId = R.drawable.list_item_activated; } @Override public void clear() { super.clear(); uncheckAll(); } @Override public View getView(int position, View convertView, ViewGroup parent) { ViewHolder holder; if (convertView == null) { convertView = mInflater.inflate(R.layout.list_item_app, null); holder = new ViewHolder(convertView); convertView.setTag(holder); } else { holder = (ViewHolder) convertView.getTag(); } final int index = position; final AppInfo app = getItem(position); final boolean checked = isChecked(position); final View view = convertView; holder.subtitle.setText(app.domain == AppConfig.DOMAIN_GOOGLE ? "Google" : ""); holder.subtitle.setVisibility(View.GONE); holder.info1.setText("package:" + app.packageName); holder.info1.setVisibility(View.GONE); holder.label1.setText("APK"); holder.label1.setVisibility(app.apkBackup ? View.VISIBLE : View.INVISIBLE); holder.label2.setText("DATA"); holder.label2.setVisibility(app.dataBackup ? View.VISIBLE : View.INVISIBLE); holder.title.setText(app.appName); String versionName = app.versionName == null ? "v1.0" : "v" + app.versionName; holder.text1.setText(Utils.getHumanReadableByteCount(app.size) + " | " + versionName); Drawable icon = getIcon(app); if (icon != null) { holder.icon.setImageDrawable(icon); } holder.checkBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { @Override public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { setChecked(index, isChecked); onChecked(index, isChecked); changeBackground(view, isChecked); } }); holder.checkBox.setChecked(checked); changeBackground(convertView, checked); return convertView; } private void changeBackground(View view, boolean checked) { if (checked) { view.setBackgroundResource(mActivateBgResId); } else { view.setBackgroundResource(0); } } private Drawable getIcon(final AppInfo app) { return mCacheManager.getIcon(app.packageName); } static class ViewHolder { ImageView icon; TextView title; TextView subtitle; TextView text1; TextView label1; TextView label2; TextView info1; CheckBox checkBox; ViewHolder(View convertView) { icon = (ImageView) convertView.findViewById(R.id.icon); title = (TextView) convertView.findViewById(R.id.title); subtitle = (TextView) convertView.findViewById(R.id.subtitle); text1 = (TextView) convertView.findViewById(R.id.text1); label1 = (TextView) convertView.findViewById(R.id.label1); label2 = (TextView) convertView.findViewById(R.id.label2); info1 = (TextView) convertView.findViewById(R.id.info1); checkBox = (CheckBox) convertView.findViewById(R.id.checkbox); } } }