package com.xunchao.listButton;
import java.util.ArrayList;
import java.util.HashMap;
import android.R.color;
import android.content.Context;
import android.graphics.Color;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.View.OnClickListener;
import android.widget.BaseAdapter;
import android.widget.ImageButton;
import android.widget.ImageView;
import android.widget.TextView;
public class lvButtonAdapter extends BaseAdapter {
private class buttonViewHolder {
ImageView appIcon;
TextView appName;
ImageButton buttonClose;
}
private ArrayList<HashMap<String, Object>> mAppList;
private LayoutInflater mInflater;
private Context mContext;
private String[] keyString;
private int[] valueViewID;
private buttonViewHolder holder;
public lvButtonAdapter(Context c, ArrayList<HashMap<String, Object>> appList, int resource,
String[] from, int[] to) {
mAppList = appList;
mContext = c;
mInflater = (LayoutInflater)mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
keyString = new String[from.length];
valueViewID = new int[to.length];
System.arraycopy(from, 0, keyString, 0, from.length);
System.arraycopy(to, 0, valueViewID, 0, to.length);
}
public int getCount() {
return mAppList.size();
}
public Object getItem(int position) {
return mAppList.get(position);
}
public long getItemId(int position) {
return position;
}
public void removeItem(int position){
mAppList.remove(position);
this.notifyDataSetChanged();
}
public View getView(int position, View convertView, ViewGroup parent) {
if (convertView != null) {
holder = (buttonViewHolder) convertView.getTag();
} else {
convertView = mInflater.inflate(R.layout.lvitem, null);
holder = new buttonViewHolder();
holder.appIcon = (ImageView)convertView.findViewById(valueViewID[0]);
holder.appName = (TextView)convertView.findViewById(valueViewID[1]);
holder.buttonClose = (ImageButton)convertView.findViewById(valueViewID[2]);
convertView.setTag(holder);
}
HashMap<String, Object> appInfo = mAppList.get(position);
if (appInfo != null) {
String aname = (String) appInfo.get(keyString[1]);
int mid = (Integer)appInfo.get(keyString[0]);
int bid = (Integer)appInfo.get(keyString[2]);
holder.appName.setText(aname);
holder.appIcon.setImageDrawable(holder.appIcon.getResources().getDrawable(mid));
holder.buttonClose.setImageDrawable(holder.buttonClose.getResources().getDrawable(bid));
holder.buttonClose.setOnClickListener(new lvButtonListener(position));
}
return convertView;
}
//主要的部分是以下代码,如果和我一样是菜鸟的同学就仔细看看这几行代码这里是关键
class lvButtonListener implements OnClickListener {
private int position;
//获取所点击项的id
lvButtonListener(int pos) {
position = pos;
}
//获取当前项的id并判断是否与所点击项的id相同
public void onClick(View v) {
int vid=v.getId();
if (vid == holder.buttonClose.getId())
//如果相同就改变状态
v.setBackgroundColor(Color.WHITE);
}
}
}