Adapter实例
(1)创建grid的自定义item布局文件grid_item.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android=""
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center_horizontal"
android:orientation="vertical"
android:pading="10dip" >
<FrameLayout
android:id="@+id/frameLayout1"
android:layout_width="wrap_content"
android:layout_height="wrap_content" >
<ImageView
android:id="@+id/img1"
android:src="@drawable/img1"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<ImageView
android:id="@+id/jian"
android:src="@drawable/jian"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:visibility="invisibale" />
</FrameLayout>
<TextView
android:id="@+id/name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/frameLayout1" />
<Button
android:id="@+id/select"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/name" />
</RelativeLayout>
(2)Adapter
public class MyAdapter extends BaseAdapter{
private List<? extends Map<Sting,?>> list;
private Context context;
private View inflater;
private int position;
private ViewHolder holder;
private InfGetPosition getPosition;
public void setGetPosition(InfGetPosition getPosition){
this.getPosition=getPosition;
}
public MyAdapter(Context context,List<? extends Map<Sting,?>> data){
this.context=context;
this.list=data;
}
public View getView(final int positin,View convertView,ViewGroup parent){
if(convertView==null){
holder= new ViewHolder();
LayoutInflater inflater=LayoutInflater.from(context);
convertView=inflater.inflate(R.layout.grid_item,null);
}
holder.img=(ImageView)convertView.findViewById(R.id.img1);
<pre class="java" name="code"> holder.jian=(ImageView)convertView.findViewById(R.id.jian);
<pre class="java" name="code"> holder.name=(TextView)convertView.findViewById(R.id.name);
<pre class="java" name="code"> holder.select=(Button)convertView.findViewById(R.id.select);
holder.name.setText(list.get(position).get("name").toString());
holder.select.setOnClickListener(new OnconverViewClickListener(convertView,R.id.adapter_id_position){
@Override
public void onClickCallBack(View registedView,int... positinIds){
getPosition.getPosition(positionIds[0],"select");
}
});
convertView.setTag(R.id.adapter_id_position,position);
return convertView;
}
public static class ViewHolder{
ImageView img;
ImageView jian;
TextView name
Button select;
}
}
(3)tag中的id,建ids.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
<item name="adapter_id_position" type="id"></item>
</resources>
(4)新建OnConvertViewClickListener
public abstract class OnConvertViewClickListener implements View.OnClickListener{
private View convertView;
private int[] positionIds;
public OnConvertViewClickListener(View convertView,int... positionIds){
this.convertView=convertView;
this.positionIds=positionIds;
}
@TargetApi(Build.VERSION_CODES.DONUT)
@Override
public void onClick(View v){
int len=positionIds.length;
int[] positions=new int[len];
for(int i=0;i<len;i++){
positions[i]=(int) convertView.getTag(positionIds[i]);
}
onClickCallBack(v,positins);
}
public abstract void onClickCallBack(View registedView,int... positionIds);
}