package cn.edu.buaa.act.sdp.malwaredetector.adapter; import android.app.ActivityManager; import android.content.Context; import android.content.pm.PackageManager; import android.graphics.drawable.Drawable; import android.os.Debug; import android.os.SystemClock; import android.support.v7.widget.RecyclerView; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ImageView; import android.widget.TextView; import java.util.List; import cn.edu.buaa.act.sdp.malwaredetector.R; /** * Created by yaodh on 2014/11/20. */ public class ProcessAdapter extends RecyclerView.Adapter<ProcessAdapter.ViewHolder> { private Context context; private List<ActivityManager.RunningAppProcessInfo> list; public ProcessAdapter(Context context, List<ActivityManager.RunningAppProcessInfo> list) { this.context = context; this.list = list; } @Override public ProcessAdapter.ViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) { View view = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.applist_item, viewGroup, false); ViewHolder viewHolder = new ViewHolder(view); return viewHolder; } @Override public void onBindViewHolder(ProcessAdapter.ViewHolder viewHolder, int i) { final ActivityManager.RunningAppProcessInfo entity = list.get(i); PackageManager pm = context.getPackageManager(); ActivityManager activityManager = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE); Debug.MemoryInfo[] memoryInfos = activityManager.getProcessMemoryInfo(new int[]{entity.pid}); int memSize = memoryInfos[0].dalvikPrivateDirty; viewHolder.tvAppSize.setText(String.format("%.1f MB", memSize / 1024.0)); try { Drawable icon = pm.getApplicationIcon(entity.pkgList[0]); viewHolder.ivAppIcon.setImageDrawable(icon); } catch (PackageManager.NameNotFoundException e) { e.printStackTrace(); viewHolder.ivAppIcon.setImageDrawable(context.getResources().getDrawable(R.drawable.ic_launcher)); } viewHolder.tvAppName.setText(entity.processName); viewHolder.tvAppVersion.setText("" + entity.pid); } @Override public int getItemCount() { return list.size(); } public class ViewHolder extends RecyclerView.ViewHolder { public ImageView ivAppIcon; public TextView tvAppName; public TextView tvAppDate; public TextView tvAppVersion; public TextView tvAppSize; public View itemView; public ViewHolder(View itemView) { super(itemView); this.itemView = itemView; ivAppIcon = (ImageView) itemView.findViewById(R.id.app_icon); tvAppName = (TextView) itemView.findViewById(R.id.app_name); tvAppDate = (TextView) itemView.findViewById(R.id.app_date); tvAppVersion = (TextView) itemView.findViewById(R.id.app_version); tvAppSize = (TextView) itemView.findViewById(R.id.app_size); } } }