Adapter实例

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);
}


 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值