先给个效果图:
Gridview Item 中点击后圆形变成一个红色小圈其实是图片的切换。
其实做之前我一直在考虑图片切换这段代码是放在Adapter的getview中还是Activity中。
一开始是放在getview中。convertView是当前点击的view。map后面来解释。这样就可以切换图片了,然后我发现我在Activity中的Gridview点击事件无效了,Activity中不能点击的话 那我金额就不能跟着改变了。没有查原因直接就放弃了。
convertView.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
ClearCheck();
((ImageView) (map.get("" + position))).setImageResource(R.drawable.check);
}
});
在getview中加这段代码Activity中的Gridview点击事件无效了。
在Activity中声明一个静态Map来装Imgview
public static HashMap<String, Object> map; //声明一个静态Map来装Imgview
Adapter全部代码都在这里。
public class GiftAdapter extends BaseAdapter {
Context context;
int[] imageUrls ;
float[] num;
public GiftAdapter(Context context,int[] imageUrls,float[] num)
{
this.context =context;
this.imageUrls=imageUrls;
GiftActivity.map = new HashMap<String, Object>();
this.num=num;
}
@Override
public int getCount() {
return imageUrls.length;
}
@Override
public Object getItem(int arg0) {
return null;
}
@Override
public long getItemId(int arg0) {
return 0;
}
@Override
public View getView(final int position, View convertView, ViewGroup arg2) {
ViewHoder viewHoder = null;
if(convertView==null)
{
viewHoder =new ViewHoder();
convertView = LayoutInflater.from(context).inflate(R.layout.giftitem, null);
viewHoder.img =(ImageView) convertView.findViewById(R.id.gifticon);
viewHoder.check =(ImageView) convertView.findViewById(R.id.check);
viewHoder.num =(TextView) convertView.findViewById(R.id.giftnum);
convertView.setTag(viewHoder);
}
else{
viewHoder =(ViewHoder) convertView.getTag();
}
//注意这句代码我把Imageview装进Map里面去了。
GiftActivity.map.put("" + position, viewHoder.check);
viewHoder.img.setImageResource(imageUrls[position]);
viewHoder.num.setText(num[position]+"");
return convertView;
}
static class ViewHoder
{
ImageView img;
ImageView check;
TextView num;
}
}