当前位置: 星创客 > 学习资源 > 讲师博文 > Android控件之ListView使用方法详解
Android控件之ListView使用方法详解 时间:2017-11-08     来源:星创客
这里我们通过代码及注释来详细说明一下ListView的使用方法。
步骤:
1、定义一个实体类,作为ListView适配器的适配类型
			class Color{
		private String name;
		private int imageId;
		
		public Color(String name,int imageId){
			this.name = name;
			this.imageId = imageId;
		}
		
		public String getName(){
			return name;
		}
		
		public int getImageId(){
			return imageId;
		}
	}
	2、在layout下创建目标item的xml文件,并设置布局。设置item中的imageView时注意imageView的大小及图片的缩放处理
	3、创建一个继承自ArratAdapter的适配器(类),注意泛型指定的数据类型
		class ColorAdapter extends ArrayAdapter<Color>{

		private int resourceId;
		public ColorAdapter(Context context, int resource, List<Color> objects) {	//将上下文、ListView子项布局的id和数据传递进来
			super(context, resource, objects);
			resourceId = resource;			//保存ListView子项布局的id
		}	
		@Override
		public View getView(int position, View convertView, ViewGroup parent) {		//此方法在每个子项被滚动到屏幕内的时候被调用
			//return super.getView(position, convertView, parent);
			//View view = LayoutInflater.from(getContext()).inflate(resourceId, null);	//LayoutInflater来为这个子项加载我们传入的布局
			Color color = getItem(position);		//获取要显示在view上的数据
			View view;
			ViewHolder viewHolder;
			if(convertView == null){		//避免了每次都加载一遍布局,当ListView快速滚动的时候就会出现瓶颈,通过此改动
				view = LayoutInflater.from(getContext()).inflate(resourceId, null);	//起始创建屏幕显示个数的view,当顶部的view彻底滑出屏幕的时候,
				/*初始化viewHolder*/												//滑出的view就进入到Recycler中准备进行复用,
				viewHolder = new ViewHolder();								//新滑进来的如果从Recycler中获取到了能复用的view,那么直接改写view中的数据即可
				viewHolder.colorImage = (ImageView)view.findViewById(R.id.iv);
				viewHolder.colorName = (TxetView)view.findViewById(R.id.tv);
				view.setTag(viewHolder);	//将viewHolder存储在view中
					//如果Recycler中没有能重用的view,则创建新的(ListView中的一个子项)
			}else{																	
				view = convertView;													
				viewHolder = (ViewHolder)view.gettag();								//重新获取ViewHolder
			}																								
			/*
			ImageView colorImage = (ImageView)view.findViewById(R.id.iv);		//分别获取item内控件的实例
			TextView colorText = (TextView)view.findViewById(R.id.tv);
			colorImage.setImageResource(color.getImageId());		//分别调用set方法来设置控件内部显示的图片和文字
			colorText.setText(color.getName());
			*/
			viewHolder.colorImage.setImageResource(color.getImageId());
			viewHolder.colorName.setText(color.getNmae());
			return view;		//将设置完的布局返回
		}
		
		class ViewHolder{		//定义类,用来保存findViewById返回的实例
			ImageView colorImage;
			TextView colorName;
		}
	}
	4、创建一个ArrayList对象,用作数据和item之间的桥梁
		private List<Color> colorlist = new ArrayList<Color>();
	5、由于得初始化item中的数据,可以将ArrayList的初始化封装在一个初始化函数中,在加载完布局文件之后调用初始化即可
			private void initColor(){
		Color black = new Color("black",R.drawable.black);
		colorlist.add(black);		//把创建好的对象添加到colorlist中
		Color pink = new Color("pink",R.drawable.pink);
		colorlist.add(pink);
		Color blue = new Color("blue",R.drawable.blue);
		colorlist.add(blue);
		Color red = new Color("red",R.drawable.red);
		colorlist.add(red);
		}
	6、创建自定义适配器的对象,然后为ListView设置监听器即可
		ColorAdapter adapter = new ColorAdapter(MainActivity.this, R.layout.color_item,colorlist);
	7、为ListView设置监听器
		lv.setOnItemClickListener(new OnItemClickListener() {
		@Override
		public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
			Toast.makeText(MainActivity.this, colorList.get(position).getName(), Toast.LENGTH_SHORT).show();
		}
	});

前台专线:010-82525158 企业培训洽谈专线:010-82525379 院校合作洽谈专线:010-82525379 Copyright © 2004-2018 北京华清远见科技发展有限公司 版权所有 ,京ICP备16055225号,京公海网安备11010802025203号
返回

讲师博文

星创客 - 华清远见旗下高端IT培训品牌

当前位置: 星创客 > 学习资源 > 讲师博文 >

Android控件之ListView使用方法详解
来源: 星创客 作者: 星创客 时间:2017-11-08

这里我们通过代码及注释来详细说明一下ListView的使用方法。 步骤: 1、定义一个实体类,作为ListView适配器的适配类型 class Color{ private String name; private int imageId; public Color(String name,int imag...

这里我们通过代码及注释来详细说明一下ListView的使用方法。
步骤:
1、定义一个实体类,作为ListView适配器的适配类型
			class Color{
		private String name;
		private int imageId;
		
		public Color(String name,int imageId){
			this.name = name;
			this.imageId = imageId;
		}
		
		public String getName(){
			return name;
		}
		
		public int getImageId(){
			return imageId;
		}
	}
	2、在layout下创建目标item的xml文件,并设置布局。设置item中的imageView时注意imageView的大小及图片的缩放处理
	3、创建一个继承自ArratAdapter的适配器(类),注意泛型指定的数据类型
		class ColorAdapter extends ArrayAdapter<Color>{

		private int resourceId;
		public ColorAdapter(Context context, int resource, List<Color> objects) {	//将上下文、ListView子项布局的id和数据传递进来
			super(context, resource, objects);
			resourceId = resource;			//保存ListView子项布局的id
		}	
		@Override
		public View getView(int position, View convertView, ViewGroup parent) {		//此方法在每个子项被滚动到屏幕内的时候被调用
			//return super.getView(position, convertView, parent);
			//View view = LayoutInflater.from(getContext()).inflate(resourceId, null);	//LayoutInflater来为这个子项加载我们传入的布局
			Color color = getItem(position);		//获取要显示在view上的数据
			View view;
			ViewHolder viewHolder;
			if(convertView == null){		//避免了每次都加载一遍布局,当ListView快速滚动的时候就会出现瓶颈,通过此改动
				view = LayoutInflater.from(getContext()).inflate(resourceId, null);	//起始创建屏幕显示个数的view,当顶部的view彻底滑出屏幕的时候,
				/*初始化viewHolder*/												//滑出的view就进入到Recycler中准备进行复用,
				viewHolder = new ViewHolder();								//新滑进来的如果从Recycler中获取到了能复用的view,那么直接改写view中的数据即可
				viewHolder.colorImage = (ImageView)view.findViewById(R.id.iv);
				viewHolder.colorName = (TxetView)view.findViewById(R.id.tv);
				view.setTag(viewHolder);	//将viewHolder存储在view中
					//如果Recycler中没有能重用的view,则创建新的(ListView中的一个子项)
			}else{																	
				view = convertView;													
				viewHolder = (ViewHolder)view.gettag();								//重新获取ViewHolder
			}																								
			/*
			ImageView colorImage = (ImageView)view.findViewById(R.id.iv);		//分别获取item内控件的实例
			TextView colorText = (TextView)view.findViewById(R.id.tv);
			colorImage.setImageResource(color.getImageId());		//分别调用set方法来设置控件内部显示的图片和文字
			colorText.setText(color.getName());
			*/
			viewHolder.colorImage.setImageResource(color.getImageId());
			viewHolder.colorName.setText(color.getNmae());
			return view;		//将设置完的布局返回
		}
		
		class ViewHolder{		//定义类,用来保存findViewById返回的实例
			ImageView colorImage;
			TextView colorName;
		}
	}
	4、创建一个ArrayList对象,用作数据和item之间的桥梁
		private List<Color> colorlist = new ArrayList<Color>();
	5、由于得初始化item中的数据,可以将ArrayList的初始化封装在一个初始化函数中,在加载完布局文件之后调用初始化即可
			private void initColor(){
		Color black = new Color("black",R.drawable.black);
		colorlist.add(black);		//把创建好的对象添加到colorlist中
		Color pink = new Color("pink",R.drawable.pink);
		colorlist.add(pink);
		Color blue = new Color("blue",R.drawable.blue);
		colorlist.add(blue);
		Color red = new Color("red",R.drawable.red);
		colorlist.add(red);
		}
	6、创建自定义适配器的对象,然后为ListView设置监听器即可
		ColorAdapter adapter = new ColorAdapter(MainActivity.this, R.layout.color_item,colorlist);
	7、为ListView设置监听器
		lv.setOnItemClickListener(new OnItemClickListener() {
		@Override
		public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
			Toast.makeText(MainActivity.this, colorList.get(position).getName(), Toast.LENGTH_SHORT).show();
		}
	});

相关推荐

全国咨询热线:400-611-6270

?2004-2018华清远见教育科技集团 版权所有 京ICP备16055225号 京公海网安备11010802025203号