package com.guangli.applock;
import java.util.List;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.CheckBox;
import android.widget.ImageView;
import android.widget.TextView;
/**
*
* @author lance.liang
* �����Լ��������б��������࣬�����˸�ѡ�͵���¼�������
*/
public class BrowseApplicationInfoAdapter extends BaseAdapter{
private List<AppInfo> mlistAppInfos = null;
LayoutInflater inflater = null;
OnClickBoxListener listener;
Context context;
public BrowseApplicationInfoAdapter(Context context,List<AppInfo> apps) {
inflater = LayoutInflater.from(context);/*(LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);*/
mlistAppInfos = apps;
this.context = context;
}
public void setDatas(List<AppInfo> appInfos){
mlistAppInfos = appInfos;
}
public int getCount() {
// TODO Auto-generated method stub
return mlistAppInfos.size();
}
public Object getItem(int position) {
// TODO Auto-generated method stub
return mlistAppInfos.get(position);
}
public long getItemId(int position) {
// TODO Auto-generated method stub
return position;
}
public View getView(final int position, View convertView, ViewGroup parent) {
View view = null;
ViewHolder holder = null;
if(convertView==null || convertView.getTag()==null) {
view = inflater.inflate(R.layout.browse_app_item, null);
holder = new ViewHolder((ImageView)view.findViewById(R.id.imgApp),
(TextView)view.findViewById(R.id.tvAppLable),
(CheckBox)view.findViewById(R.id.checkBox),
(ImageView)view.findViewById(R.id.lock)
);
view.setTag(holder);
} else
{
view = convertView;
holder = (ViewHolder) convertView.getTag();
}
AppInfo appInfo = (AppInfo) getItem(position);
holder.appIconImageView.setImageDrawable(appInfo.getAppIcon());
holder.tvAppLableTextView.setText(appInfo.getAppLabel());
holder.checkbox.setChecked(appInfo.isChecked());
holder.lock.setImageDrawable(appInfo.getLockeIcon());
holder.checkbox.setOnClickListener(new OnClickListener(){
public void onClick(View v) {
// TODO Auto-generated method stub
CheckBox c = (CheckBox)v;
if(BrowseApplicationInfoAdapter.this.listener!=null){
listener.OnClickBox(position, c.isChecked());
}
}
});
final ViewHolder holder1 = holder;
view.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
boolean checked = holder1.checkbox.isChecked();
if(BrowseApplicationInfoAdapter.this.listener!=null){
holder1.checkbox.setChecked(!checked);
if(BrowseApplicationInfoAdapter.this.listener!=null){
listener.OnClickBox(position, !checked);
}
}
}
});
view.setTag(holder1);
return view;
}
public class ViewHolder{
ImageView appIconImageView;
TextView tvAppLableTextView;
CheckBox checkbox;
ImageView lock;
public ViewHolder(ImageView appIconImageView, TextView tvAppLableTextView,
CheckBox checkbox,ImageView lock) {
super();
this.appIconImageView = appIconImageView;
this.tvAppLableTextView = tvAppLableTextView;
this.checkbox = checkbox;
this.lock = lock;
}
}
/**
* ���ü�����
* @param listener����Ҫ���õļ���������
*
*
*/
public void setOnClickBoxListener( OnClickBoxListener listener){
this.listener = listener;
}
/**
*
* @author lance.liang
* �б����¼���������װ�ӿڣ����б����¼���ѡ�����¼�ͳһ���˽ӿ�
*/
public interface OnClickBoxListener {
public void OnClickBox(int position,boolean checked);
}
}