`

ListView

 
阅读更多
ListView 列表视图:
	适配器:
		ArrayAdapter:最简单的适配器,只能显示一行文字
		SimpleAdapter:具有很好扩展性的适配器,可以显示自定义内容
		
		
		ArrayAdapter:------------------
		|
		|	ListView lv = new ListView(TextViewActivity.this);
		|	List<String> list = new ArrayList<String>();
		|	list.add("Item1");
		|	list.add("Item2");
		|	list.add("Item3");
		|	/**
		|	 * 适配器:
		|	 * 第一个参数:Context
		|	 * 第二个参数:ListView中每一行布局样式
		|	 * android.R.layout.simple_expandable_list_item_1 系统中每行只显示一行文字布局
		|	 * 第三个参数:列表数据空器
		|	 */
		|	ArrayAdapter<String> aa = new ArrayAdapter<String>(TextViewActivity.this, android.R.layout.simple_expandable_list_item_1,list);
		|	lv.setAdapter(aa);
		|	
		|	//监听
		|	lv.setOnItemClickListener(new OnItemClickListener() {
		|		@Override
		|		//arg2:下标
		|		public void onItemClick(AdapterView<?> arg0, View arg1,
		|				int arg2, long arg3) {
		|			// TODO Auto-generated method stub
		|			Toast.makeText(TextViewActivity.this, arg1+","+arg2+","+arg3,Toast.LENGTH_LONG).show();
		|		}					
		|	});
		|	
		|	TextViewActivity.this.setContentView(lv);
		|
		end------------------------------------------------------------------------
		
		SimpleAdapter:---------------------
		|	
		| 	因为要自定义ListView中的项,所以,不使用Andorid系统提供的布局。
		|	
		|	<?xml version="1.0" encoding="utf-8"?>
		|	<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
		|		android:layout_width="match_parent"
		|		android:layout_height="match_parent"
		|		android:orientation="horizontal" >
		|		
		|		<ImageView
		|			android:id="@+id/iv" 
		|			android:layout_width="wrap_content"
		|			android:layout_height="wrap_content"
		|			
		|			/>
		|		
		|		<LinearLayout 
		|			android:layout_width="wrap_content"
		|			android:layout_height="wrap_content"
		|			android:orientation="vertical"
		|			>
		|			<TextView 
		|				android:id="@+id/bigtv"
		|				android:layout_width="wrap_content"
		|				android:layout_height="wrap_content"
		|				android:textSize="10sp"
		|				/>
		|			<TextView 
		|				android:id="@+id/smalltv"
		|				android:layout_width="wrap_content"
		|				android:layout_height="wrap_content"
		|				android:textSize="10sp"
		|				/>
		|			
		|		</LinearLayout>
		|		
		|		
		|		<Button 
		|			android:id="@+id/btn"
		|			android:layout_width="wrap_content"
		|			android:layout_height="wrap_content"
		||			/>
		|		
		|		<CheckBox 
		|			android:id="@+id/cb"
		|			android:layout_width="wrap_content"
		|			android:layout_height="wrap_content"
		|			/>
		|	</LinearLayout>
		|	
		|	
		|	List<Map<String,Object>> list = new ArrayList<Map<String,Object>>();
		|		ListView lv = new ListView(TextViewActivity.this);//实例化表视图
		|		//实例一个列表数据容器
		|		Map<String,Object> map = new HashMap<String,Object>();
		|		map.put("item1_imageivew", R.drawable.ico);
		|		map.put("item1_bigtv", "BIGTV");
		|		map.put("item1_smalltv", "SMALLTV");
		|		//将列表数据添加到列表容器中
		|		list.add(map);
		|		//实例适配器
		|		SimpleAdapter sa = new SimpleAdapter(TextViewActivity.this,list, R.layout.simpleadapter_view,new String[]{"item1_imageivew","item1_bigtv","item1_smalltv"},new int[]{R.id.iv,R.id.bigtv,R.id.smalltv});
		|		lv.setAdapter(sa);
		|		TextViewActivity.this.setContentView(lv);
		|		
		|		
		|		List相当于ListView中的每一项,在使用ArrayAdapter做ListView适配器时,
		|		List容器中只是简单的添加了String字符串,但是这里需要在ListView的每
		|		一项中自定义组,所以List的声明不是List<String>而是List<Map<String,Object>>
		|		
		|		List<Map<String,Object>>可以理解为在ListView的每一项中不再是简单的一行
		|		字符串,而是将每一项添加一个组件容器Map。
		|		其Map的put(String key,Object value)的进行添加数据时,每一个put()函数都
		|		对应自定义ListView中的一个组件。
		|		但是需要注意的是:按钮、复选框的组件是无法数据映射的。
		|		
		|		SimpleAdapter(Content content,List data,int resource,String[] from,int[] to)
		|		content:当前的content对象
		|		data:ListView各项数据
		|		resource:布局
		|		from:每一项中的数据映射索引数组
		|		to:每一项数据对应的组件ID数组
		|		
		|	
		|
		end-----------------------------------------------------------------
		
		
		ListView自定义适配器---------------------
		|	按钮和复选框等这些附带事件的组件无法将数据射映在ListView上,所以,需要
		|	监听和响应按钮、复选框等组件的事件,则需要继承BaseAdapter进行自定义适配器
		|	来实现。
		|	当一个ListView显示之前都会调用适配器中的getCount()函数来确定
		|	ListView中项的长度,然后根据此长度再去调用getView()函数绘制ListView中的每一项。
		|	
		|
		|	public class MySimpleAdapter extends BaseAdapter{
		|		//声明一个LayoutInflater对象(用来实例化布局)
		||		private List<Map<String,Object>> list;//声明List容器对象
		|		private int layoutId;//布局Id
		|		private String flat[];//ListView的所有组件映射索引
		|		private int itemIds[];//ListView的所有组件Id
		|		
		|		public MySimpleAdapter(Context context,List<Map<String,Object>> list,int layoutId,String flat[],int itemIds[]){
		|			this.mInflater = LayoutInflater.from(context);
		|			this.list = list;
		|			this.layoutId = layoutId;
		|			this.flat = flat;
		|			this.itemIds = itemIds;
		|		}
		|		
		|		@Override
		|		public int getCount() {
		|			// TODO Auto-generated method stub
		|			return list.size();//返回ListView项的长度
		|		}
		|
		|		@Override
		|		public Object getItem(int arg0) {
		|			// TODO Auto-generated method stub
		|			return 0;
		|		}
		|
		|		@Override
		|		public long getItemId(int arg0) {
		|			// TODO Auto-generated method stub
		|			return 0;
		|		}
		|		/**
		|		 *	实例化布局与组件以及设置组件数据
		|		 *	getView(int position,vView convertView,ViewGroup parent)
		|		 *	position:绘制的行数
		|		 *  convertView:绘制的视图这里指的是ListView中每一项的布局
		|		 * 	parent:view的合集
		|		 */
		|		@Override
		|		public View getView(int position, View convertView, ViewGroup parent) {
		|			// TODO Auto-generated method stub
		|			//将布局通过mInflater对象实例化为一个view
		|			convertView = mInflater.inflate(layoutId, null);
		|			for (int i = 0; i < flat.length; i++) {
		|				//每个组件都做匹配判断,得到组件的正确类型
		|				if(convertView.findViewById(itemIds[i]) instanceof ImageView){
		|					//findViewById()函数作用是实例化布局中的组件
		|					//当组件为ImageView类型,则为其实例化一个ImageView对象
		|					ImageView iv = (ImageView) convertView.findViewById(itemIds[i]);
		|					//为组件设置数据
		|					iv.setBackgroundResource((Integer)list.get(position).get(flat[i]));
		|				}else if(convertView.findViewById(itemIds[i]) instanceof TextView){
		|					TextView tv = (TextView)convertView.findViewById(itemIds[i]);
		|					tv.setText((String)list.get(position).get(flat[i]));
		|				}
		|			}
		|			//为Button添加单击监听
		|			((Button)convertView.findViewById(R.id.btn)).setOnClickListener(new OnClickListener() {
		|				@Override
		|				public void onClick(View v) {
		|					// TODO Auto-generated method stub
		|				}
		|			});
		|			
		|			return convertView;
		|		}
		|		
		|	}
		end---------------------------------------------------------------------------------------
		
		
		
		
		
		
		
		
		
		
		
		
		
		

 

0
2
分享到:
评论

相关推荐

    android的listview嵌套listview,列表嵌套列表 android studio版本

    在Android开发中,ListView是一种常用的视图组件,用于展示大量数据列表。当需求涉及列表中的每个条目本身也需要展示一个子列表时,我们就会遇到ListView的嵌套问题。本教程将详细讲解如何在Android Studio环境下...

    ListView嵌套ListView全选,多选

    在Android开发中,ListView是一种常用的UI组件,用于展示大量数据列表。当需要在ListView中实现更复杂的布局,比如一个ListView嵌套另一个ListView时,我们可能会遇到“全选”和“多选”的需求。这个场景常见于例如...

    Android-ListView中嵌套(ListView)控件兼容问题

    ### Android-ListView中嵌套(ListView)控件兼容问题 #### 背景与问题描述 在Android开发中,有时我们需要在`ListView`中嵌套另一个`ListView`以实现更复杂的用户界面设计。然而,在实际操作过程中可能会遇到一些...

    C# ListView使用例子ListView排列方式演示

    在C#编程中,ListView控件是一个非常常用的组件,它用于显示数据集合,并且提供了多种视图模式,如图标、小图标、详细信息等。在这个"C# ListView使用例子ListView排列方式演示"中,我们将深入探讨如何利用ListView...

    listview添加图片按钮 及按钮跟ListView双监听

    在Android开发中,ListView是一种常用的UI组件,用于展示大量数据列表。在实际应用中,我们经常需要对ListView进行自定义,比如在每个列表项中添加图片和按钮,以增加交互性和功能多样性。本文将深入探讨如何在...

    vb ListView 可编辑

    在VB(Visual Basic)编程环境中,ListView控件是一种常用且功能强大的组件,它允许开发者以列表形式展示数据。在默认情况下,ListView控件通常只支持读取操作,但通过一些扩展和自定义,我们可以实现其列数据的编辑...

    ListView的嵌套,动态设置ListView的高度

    在Android开发中,ListView是一种常见的视图组件,用于展示大量数据列表。然而,在某些复杂的界面设计中,我们可能需要在一个ListView中嵌套另一个ListView,这就涉及到"ListView嵌套"的技术。这种技术可以用来构建...

    ListView下拉更新功能

    ListView是Android平台上常见的一种列表控件,用于展示大量数据的列表形式。在移动应用开发中,为了提升用户体验,经常需要实现类似微博那样可以下拉刷新的功能。本教程将详细介绍如何在Android中实现ListView的下拉...

    listview的小demo

    ListView是Android平台上一个非常重要的控件,主要用于展示大量的数据列表,具有良好的滚动性能和可定制性。本笔记将深入探讨ListView的基本使用,帮助初学者掌握这个控件的关键知识点。 一、ListView的基本结构 ...

    WPF ListView 漂亮样式

    在Windows Presentation Foundation (WPF) 中,ListView 是一个强大的控件,用于展示数据集合,并提供了多种自定义样式和布局选项,使得用户界面更加美观和功能丰富。本教程将深入探讨如何利用WPF ListView 创建漂亮...

    C# Listview固定列宽

    在C#编程中,`ListView`控件是一个常用的组件,常用于显示数据集中的行和列,类似于电子表格。在某些场景下,我们可能需要固定`ListView`的列宽,防止用户手动调整列宽,以保持界面的一致性和美观性。标题"**C# ...

    VBA实战系列(ListView控件)

    ### VBA实战系列(ListView控件) #### 一、概述 在Excel VBA开发中,ListView控件是一种非常强大的工具,它可以用来展示大量的结构化数据,并且具备良好的可定制性和美观性。对于需要处理大量数据并希望有良好用户...

    改变ListView网格颜色

    在VB(Visual Basic)编程中,ListView控件是常见的数据展示组件,用于显示列表或表格形式的数据。在某些情况下,为了提升用户界面的美观度和可读性,开发者可能需要自定义ListView的显示效果,例如改变网格的颜色。...

    viewpage嵌套listview,效果:滑动listview删除,滑动非listview区域viewpage翻页

    标题"viewpage嵌套listview,效果:滑动listview删除,滑动非listview区域viewpage翻页"描述的就是这样一个功能:在ViewPager中嵌套了一个ListView,ListView支持滑动删除,而当滑动到ListView之外的区域时,...

    C#使用listView增删操作实例

    在C#编程中,ListView控件是一个非常常用的组件,它允许开发者在窗口或者对话框上显示数据列表。这个控件可以展示多列数据,并且支持多种操作,如增删、选择和排序。在这个实例中,我们将深入探讨如何使用C#进行...

    WPF的ListView控件自定义布局用法实例

    在WPF中,ListView控件是一个非常常用的组件,它用于展示数据集合,并提供了多种布局方式。自定义布局允许开发者根据需求灵活设计ListView显示的内容和样式。本实例将深入讲解如何在WPF中自定义ListView控件的布局。...

    ListView中添加CheckBox

    1、ListView item中加入checkbox后onListItemClick 事件无法触发。 原因:checkbox的优先级高于ListItem于是屏蔽了ListItem的单击事件。 解决方案:设置checkbox的android:focusable="false" 2、选择其中的...

    Android listview自动换行

    在Android开发中,ListView是一种非常常见的控件,用于展示大量数据列表。它的高效性和可滚动性使得它在显示数据集合时十分有用。然而,当ListView的子项(item)宽度超过屏幕宽度时,如何实现自动换行就成了一个...

    C# ListView添加行距(ListView 添加行间距)源代码

    C# ListView添加行距 源代码 ListView添加行距 一、问题 listview控件,可以实现增大行距吗?行与行太紧了,不好看呀。 有办法可以实现吗? 我不想通过加大字体的方法,因为字体大了,行距还是近呀。 我要的是增大行...

Global site tag (gtag.js) - Google Analytics