package com.andro;
import java.util.List;
import android.content.Context;
import android.content.pm.PackageManager;
import android.graphics.Bitmap;
import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.Drawable;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.CompoundButton.OnCheckedChangeListener;
import android.widget.ImageView;
import android.widget.TextView;
public class PackageAppsAdapter extends BaseAdapter {
private final LayoutInflater mInflater;
private PackageManager mPackageManager;
private List<AppInfo> mAppInfo;
public PackageAppsAdapter(Context context, List<AppInfo> list) {
super();
mInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
mPackageManager = context.getPackageManager();
mAppInfo = list;
}
public View getView(int position, View convertView, ViewGroup parent) {
final Holder holder;
if (convertView == null) {
holder = new Holder();
convertView = mInflater.inflate(R.layout.add_list_item, parent, false);
holder.tv_activityName = (TextView) convertView.findViewById(R.id.activityName);
holder.tv_activityName.setVisibility(View.GONE);
holder.tv_appName = (TextView) convertView.findViewById(R.id.appName);
holder.iv_appImage = (ImageView) convertView.findViewById(R.id.icon);
holder.cb_check = (CheckBox) convertView.findViewById(R.id.checkbox);
convertView.setTag(holder);
} else {
holder = (Holder) convertView.getTag();
}
holder.cb_check.setTag(position);
if(holder.cb_check!=null){
holder.cb_check.setOnCheckedChangeListener(new OnCheckedChangeListener(){
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
// TODO Auto-generated method stub
Integer id = (Integer) buttonView.getTag();
AppInfo appList = mAppInfo.get(id);
appList.isCheck = isChecked;
mAppInfo.set(id, appList);
}
});
}
AppInfo appList = mAppInfo.get(position);
holder.tv_appName.setText(appList.appName);
try {
Drawable drawable = mPackageManager.getApplicationIcon(appList.packageName);
Bitmap bitmap = ((BitmapDrawable) drawable).getBitmap();
bitmap = Bitmap.createScaledBitmap(bitmap, 48, 48, true);
holder.iv_appImage.setImageBitmap(bitmap);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return convertView;
}
public int getCount() {
return mAppInfo.size();
}
public Object getItem(int position) {
return mAppInfo.get(position);
}
public long getItemId(int position) {
return position;
}
public class Holder{
TextView tv_appName;
TextView tv_activityName;
ImageView iv_appImage;
CheckBox cb_check;
}
}
어댑터에 getview에 리스너 이벤트입니다. 체크박스를 클릭하면,
다른 체크박스들도 클릭이 됩니다. 이걸 어떻게 해결 해야 할까요?
리스트에서 다른 객체로 닮는 어댑터입니다.