package com.tencent.one.battery.demo.activity.powerrank; import java.util.ArrayList; import com.tencent.one.battery.core.powerrank.vo.BatterySipper; import com.tencent.one.battery.demo.MainApp; import com.tencent.one.battery.demo.R; import android.content.Context; import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.view.View.OnClickListener; import android.widget.BaseAdapter; import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.TextView; public abstract class BatteryCostAdapter extends BaseAdapter { private ArrayList<BatterySipper> batterySippers; private LayoutInflater inflater; private static float perWidth; private static int maxWidth = 240; public BatteryCostAdapter(Context context, ArrayList<BatterySipper> batterySippers) { this.batterySippers = batterySippers; this.inflater = LayoutInflater.from(context); } @Override public int getCount() { return batterySippers.size(); } @Override public Object getItem(int position) { return (batterySippers != null && batterySippers.size() > position) ? batterySippers.get(position) : null; } @Override public long getItemId(int position) { return position; } @Override public View getView(final int position, View convertView, ViewGroup parent) { LinearLayout view; BatteryCostHolder holder; if (convertView == null) { convertView = (LinearLayout) inflater.inflate(R.layout.layout_battert_cost_list, null); holder = new BatteryCostHolder(convertView); convertView.setTag(holder); } else { holder = (BatteryCostHolder) convertView.getTag(); } view = (LinearLayout) convertView; view.setOnClickListener(null); if(position >= batterySippers.size()){ return view; } holder.iv_icon.setImageDrawable(null); final BatterySipper batterySipper = batterySippers.get(position); if (batterySipper != null) { holder.iv_icon.setImageDrawable(batterySipper.iconId > 0 ?MainApp.getContext().getResources().getDrawable(batterySipper.iconId):null);//batterySipper.getIcon(MainApp.getContext()) holder.tv_name.setText(batterySipper.name); holder.tv_percent.setText(batterySipper.percent +"%"); holder.iv_progress.setAlpha(125); holder.packageName = batterySipper.defaultPackageName; holder.name= batterySipper.name; holder.uid = batterySipper.uid; Log.i("CostAdapter", "uid : " + batterySipper.uid + " "); Log.i("CostAdapter", "name : " + batterySipper.name + " "); // if (position == 0) { // if (holder.iv_progress.getMeasuredWidth() > 0 && maxWidth == 0) { // maxWidth = holder.iv_progress.getMeasuredWidth(); // } // // if (maxWidth > 0) { // holder.iv_progress.setLayoutParams(new LinearLayout.LayoutParams(maxWidth, LinearLayout.LayoutParams.WRAP_CONTENT)); // } // } else { perWidth = maxWidth / 100.0f; if( batterySipper.percent < 10.0){ holder.iv_progress.setLayoutParams(new LinearLayout.LayoutParams(20, LinearLayout.LayoutParams.WRAP_CONTENT)); }else{ holder.iv_progress.setLayoutParams(new LinearLayout.LayoutParams((int) (perWidth * ((float)batterySipper.percent)), LinearLayout.LayoutParams.WRAP_CONTENT)); } // } } view.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { itemClick(v); } }); return convertView; } public abstract void itemClick(View v); public class BatteryCostHolder { private ImageView iv_icon; private TextView tv_name; private TextView tv_percent; private ImageView iv_progress; public String packageName; public String name; public int uid; public BatteryCostHolder(View view) { iv_icon = (ImageView) view.findViewById(R.id.battery_cost_icon); tv_name = (TextView) view.findViewById(R.id.battery_cost_name); tv_percent = (TextView) view.findViewById(R.id.battery_cost_percent); iv_progress = (ImageView) view.findViewById(R.id.manage_app_iv_progress); } } /** * @return the apps */ public ArrayList<BatterySipper> getBatterySippers() { return batterySippers; } /** * @param apps * the apps to set */ public void setApps(ArrayList<BatterySipper> batterySippers) { this.batterySippers = batterySippers; } public void clear(){ if ( batterySippers != null ){ batterySippers.clear(); batterySippers = null; } } public void recycle() { // TODO 等待释放bitmap } }