package com.android.pc.ioc.a.demo; import java.util.ArrayList; import java.util.HashMap; import android.view.View; import android.widget.ImageView; import android.widget.ListView; import android.widget.TextView; import android.widget.Toast; import com.android.pc.ioc.a.demo.MyAdapter.ViewHolder; import com.android.pc.ioc.adapter.LazyAdapter; import com.android.pc.ioc.inject.InjectBinder; import com.android.pc.ioc.inject.InjectView; import com.android.pc.ioc.view.listener.OnClick; /** * 懒人适配器demo * @author gdpancheng@gmail.com 2014-5-20 下午3:14:00 */ public class MyAdapter extends LazyAdapter<HashMap<String, String>, ViewHolder> { /** * 必须调用父类的super * @param context * @param dataList * @param layout_id */ public MyAdapter(ListView view, ArrayList<HashMap<String, String>> dataList, int layout_id) { super(view, dataList, layout_id); } /** * 如果比较复杂的 则需要重写 这里实现的是类似getview的逻辑 * 但是记得不要调用super.deal(data, viewHold, position); * 这里是为了能够显示所以调用 */ @Override public void deal(HashMap<String, String> data, ViewHolder viewHold, int position) { super.deal(data, viewHold, position); System.out.println("getview的实现逻辑"); } /** * 这里实现的是图片下载 如果不重写则使用框架中的图片下载 */ @Override public void download(ImageView view, String url) { super.download(view, url); System.out.println("图片下载的实现逻辑"); } /** * 这里是ViewHolder 其中支持@InjectView 和 @InjectView(int)注解 * 其中属性名称对应其在LazyAdapter<T1,T2>的T1中的属性key * 例子 1 * 如果T1为HashMap<String, String> 则 属性名 image对应的链接在HashMap中的key为image * 例子 2 * 如果T2 为实体类 则属性名 image 必须为实体类中的一个属性 而且必须有get方法 * @author gdpancheng@gmail.com 2014-5-20 下午3:11:49 */ public class ViewHolder { @InjectView public TextView text1,text2,text3,text4,text5; @InjectView(binders={@InjectBinder(method="click",listeners = {OnClick.class})}) public ImageView image; private void click(View v){ Toast.makeText(MeApplication.app, "点击"+v.getTag(), Toast.LENGTH_LONG).show(); } } }