国内最全IT社区平台 联系我们 | 收藏本站
华晨云阿里云优惠2
您当前位置:首页 > php开源 > 综合技术 > Android――继承SimpleAdapter重写自己的getView

Android――继承SimpleAdapter重写自己的getView

来源:程序员人生   发布时间:2016-04-23 09:23:43 阅读次数:2341次


            

               在上篇Android――ListView实现简单列表 中,利用SimpleAdapter实现了简单的列表绑定。在本文中,主要是通太重写getView方法,来看下adapter内部绑定数据大致是个甚么流程。


            首先加入实现类:

       

class mTestAdapter extends SimpleAdapter { private Context context; /*运行环境*/ ArrayList<HashMap<String, String>> listItem; /*数据源*/ private LayoutInflater listContainer; // 视图容器 class ListItemView { // 自定义控件集合 public TextView txtName; } /*construction function*/ public mTestAdapter(Context context, ArrayList<HashMap<String, String>> data, int resource, String[] from, int[] to) { super(context, data, resource, from, to); this.listContainer = LayoutInflater.from(context); // 创建视图容器并设置上下文 this.context=context; listItem=data; } /** * @see android.widget.Adapter#getCount() */ public int getCount() { return listItem.size(); } /** * @see android.widget.Adapter#getItem(int) */ public Object getItem(int position) { return listItem.get(position); } /** * @see android.widget.Adapter#getItemId(int) */ public long getItemId(int position) { return position; } @Override public View getView(int position, View convertView, ViewGroup parent) { final int mPosition = position; ListItemView listItemView = null; if (convertView == null) { convertView = listContainer.inflate(R.layout.listview_item, null);//加载布局 listItemView = new ListItemView(); /*初始化控件容器集合*/ listItemView.txtName=(TextView) convertView .findViewById(R.id.name); // 设置控件集到convertView convertView.setTag(listItemView); }else{ listItemView=(ListItemView)convertView.getTag();//利用缓存的View } /* * PS: * 这里放入对控件的属性及事件进行初始化设置的操作 * */ /*TextView设置点击事件*/ listItemView.txtName.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Toast.makeText(getApplicationContext(), "点击了"+mPosition, Toast.LENGTH_SHORT).show(); } }); //设置text的值(用position标记来看的更清楚点儿) listItemView.txtName. setText(mPosition+" "+listItem.get(mPosition).get("ItemName")); return convertView; } } }

        我们用这个实现类来取代我们之前用的SimpleAdapter.

    

mTestAdapter listItemAdapter=new mTestAdapter(getBaseContext(),/*指明了SimpleAdapter关联的View的运行环境,也就是当前的Activity*/ listItem,/*由Map组成的List,在List中的每条目对应ListView的1行,每个Map中包括的就是所有在from参数中指定的key*/ R.layout.listview_item,/*定义列表项的布局文件的资源ID,该资源文件最少应当包括在to参数中定义的ID*/ new String[]{"ItemName"},/*将被添加到Map映照上的Key*/ new int[] {R.id.name}/*将绑定数据的视图的Id跟from参数对应,这些被绑定的视图元素应当全是TextView*/ ); //设置适配器

    

      以后,run下,看看我们加的toast:


       生活不易,码农辛苦
如果您觉得本网站对您的学习有所帮助,可以手机扫描二维码进行捐赠
程序员人生

------分隔线----------------------------
分享到:
------分隔线----------------------------
为码而活
积分:4237
15粉丝
7关注
栏目热点
关闭
程序员人生