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

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


            

               在上篇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的一行,每一个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:


      

             

       发现点击事件加上了,而且通过position,很容易区分我们当前到底操作的时候那个item,并可以针对这个Item进行有针对的操作。尤其是当item上面有button的时候,重写Adapter就显得比较简单了。






          

目录
相关文章
|
2天前
|
Shell Android开发
Android Activity重写dump方法实现通过adb调试代码
Android Activity重写dump方法实现通过adb调试代码
17 0
|
12月前
|
XML Java Android开发
Android安卓——SimpleAdapter的简单使用
本文是博主对Adapter(适配器)的一些理解,为了加深对Adapter的理解以及记录自己的阶段学习而写,同时也适合初学者阅读,参考本条博客的逻辑进行学习。
84 0
|
Java 数据安全/隐私保护 Android开发
Android C++系列:C++最佳实践3继承与访问控制
整个结构还是比较简单的,从类内部到本包到子类到外部包权限越来越小,比较好理解也比较好记忆。但是在C++中访问控制要复杂很多,因为不仅有属性和方法的访问控制,还有继承时的派生列表访问说明符。今天我们着重了解访问控制。
72 0
|
Android开发
Android 重写TextView的onDraw函数遇坑记
Android 重写TextView的onDraw函数遇坑记
166 0
Android 重写TextView的onDraw函数遇坑记
|
XML JSON Java
android 继承popupWindow实现时间、地址选择器
日期选择、地址选择,都是开发中少不了的功能,下面通过自定义的形式,同一套代码实现时间选择与地址选择,通过构造方法的不同来实现。
449 0
android 继承popupWindow实现时间、地址选择器
|
Java Android开发 图形学
Android修行手册之Kotlin-【Get和Set】、【继承】、【抽象类/嵌套类/内部类】篇
众所周知,人生是一个漫长的流程,不断克服困难,不断反思前进的过程。在这个过程中会产生很多对于人生的质疑和思考,于是我决定将自己的思考,经验和故事全部分享出来,以此寻找共鸣!!!
722 0
|
Android开发
Android中主要类的继承关系梳理汇总
版权声明:本文为sydMobile原创文章,转载请务必注明出处! https://blog.csdn.net/sydMobile/article/details/78904316 文章最早发布于我的微信公众号 Android_De_Home 中,欢迎大家扫描下面二维码关注微信公众及时获取更新和我交流互动。
1020 0