Listview 功能:1)列表数据的展示 2)用户点击或选中处理
创建ListView大体步骤: 1)提供数据的List<Map> 2)创建adapter并关联相应的布局和数据 3)ListView设置相应的adapter
类型:1 普通的展示列表 2 带有单选和复选操作的展示列表 3 自定义每一行view的对象展示列表(可以显示图片等)4 使用BaseAdapter优化列表
代码:
1 Log.v("MyListViewBase", "你点击了按钮" + position); // 可以打印信息到 android的控制台
2 convertView.setTag(holder); setTag可以在一个对象上绑定一个对象组
package com.example.fragmentdemo1; import java.util.ArrayList; import java.util.HashMap; import java.util.Map; import android.app.Activity; import android.content.Context; import android.os.Bundle; import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.View.OnClickListener; import android.view.ViewGroup; import android.widget.AdapterView; import android.widget.AdapterView.OnItemClickListener; import android.widget.ArrayAdapter; import android.widget.BaseAdapter; import android.widget.Button; import android.widget.ListView; import android.widget.SimpleAdapter; import android.widget.TextView; import android.widget.Toast; /** * Listview的使用 * * @author root 参考 : * http://www.cnblogs.com/noTice520/archive/2011/12/05/2276379.html * */ public class ListViewActivity extends Activity { private static final String[] strs = new String[] { "first", "second", "third", "fourth", "fifth" }; private ListView lv; //显示数据的listView对象 //绑定数据 private ArrayList<HashMap<String, Object>> listData; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.list_view_test); lv = (ListView) findViewById(R.id.listview); // showArrayAdapterList(); // showSimpleAdapterList(); showBaseAdapterList(); } /** * ArrayAdapter 的使用 : 用来绑定一个数组,支持泛型操作 * 一、列表的样式设置,以及是否可以选择、单选与多选的控制 * 1 只作为列表展示 * 2 后面有个对号的列表展示,可以设置单选和多选 * 3 带有 复选框的列表展示,可以单选和多选 * 4 带有radio的列表展示,可以单选和多选 */ private void showArrayAdapterList() { // 最简单的listView只作为展示 // ArrayAdapter<String> adapter = new // ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,strs); // 可以进行多选,每一行后面有个“对号” // ArrayAdapter<String> adapter = new // ArrayAdapter<String>(this,android.R.layout.simple_list_item_checked,strs); // 带有复选框的 列表 // ArrayAdapter<String> adapter = new // ArrayAdapter<String>(this,android.R.layout.simple_list_item_multiple_choice,strs); // 带有 radio的列表 ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_single_choice, strs); lv.setAdapter(adapter); // 如果需要选择功能需要进行这个设置: 单选、多选 给的参数不一样 lv.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);// 多选 // lv.setChoiceMode( ListView.CHOICE_MODE_SINGLE );//单选 lv.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView<?> adapter, View view, int adapterPosId, long rowId) { setTitle("你点击了第" + rowId + "行"); // 得到单击的这一行的数据 :数组和下标 strs[adapterPosId] 、adapterPosId:数组的下标位置 // 、rowId :单击的是哪一行 Toast.makeText(getApplicationContext(), "你点击了第" + rowId + "行" + strs[adapterPosId], Toast.LENGTH_SHORT).show(); } }); } /** * SimpleAdapter的使用,可以自定义列表中的布局, 用来绑定在xml中定义的控件对应的数据 1 数据:List<Map>的形式 2 * 创建SimpleAdapter: 1)每一个map就是一行数据 2) 每一行对应的数据根据adapter中对应的key映射到Map的key上 3 * 添加点击事件 */ private void showSimpleAdapterList() { /* 定义一个动态数组 */ final ArrayList<HashMap<String, Object>> listItem = new ArrayList<HashMap<String, Object>>(); /* 在数组中存放数据 */ for (int i = 0; i < 10; i++) { HashMap<String, Object> map = new HashMap<String, Object>(); map.put("ItemImage", R.drawable.icon);// 加入图片 map.put("ItemTitle", "第" + i + "行title"); map.put("ItemText", "这是第" + i + "行text"); listItem.add(map); } SimpleAdapter mSimpleAdapter = new SimpleAdapter(this, listItem,// 需要绑定的数据 R.layout.simple_list_view_adapter,// 每一行的布局 // 动态数组中的数据源的键对应到定义布局的View中 new String[] { "ItemImage", "ItemTitle", "ItemText" }, new int[] { R.id.ItemImage, R.id.ItemTitle, R.id.ItemText }); lv.setAdapter(mSimpleAdapter);// 为ListView绑定适配器 lv.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView<?> adapter, View view, int adapterPosId, long rowId) { setTitle("你点击了第" + rowId + "行");// 设置标题栏显示点击的行 // 取出单击这一行的Map Map dataMap = listItem.get(Integer.parseInt(rowId + "")); Toast.makeText( getApplicationContext(), "你点击了第" + rowId + "行" + dataMap.get("ItemTitle") + " " + dataMap.get("ItemText"), Toast.LENGTH_SHORT) .show(); } }); } /** * 1 在list中添加按钮 ,响应事件 * 2 优化list显示,使加快显示速度(重用list中行的view对象和对象查找时间) */ private void showBaseAdapterList() { listData = getData(); //准备数据 MyAdapter mAdapter = new MyAdapter(this);// 得到一个MyAdapter对象 lv.setAdapter(mAdapter);// 为ListView绑定Adapter /* 为ListView添加点击事件 */ lv.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) { Log.v("MyListViewBase", "你点击了ListView条目" + arg2);// 在LogCat中输出信息 } }); } /* 添加一个得到数据的方法,方便使用 */ private ArrayList<HashMap<String, Object>> getData() { ArrayList<HashMap<String, Object>> listItem = new ArrayList<HashMap<String, Object>>(); /* 为动态数组添加数据 */ for (int i = 0; i < 30; i++) { HashMap<String, Object> map = new HashMap<String, Object>(); map.put("ItemTitle", "第" + i + "行"); map.put("ItemText", "这是第" + i + "行"); listItem.add(map); } return listItem; } /* * 新建一个类继承BaseAdapter,实现视图与数据的绑定 */ private class MyAdapter extends BaseAdapter { private LayoutInflater mInflater;// 得到一个LayoutInfalter对象用来导入布局 /* 构造函数 */ public MyAdapter(Context context) { this.mInflater = LayoutInflater.from(context); } @Override public int getCount() { return listData.size();// 返回数组的长度 } @Override public Object getItem(int position) { return null; } @Override public long getItemId(int position) { return 0; } /** * 个人理解: * position: 列表的第几行控件调用了这个对象 * convertView: 在列表中position这一行对应加载数据的控件,滚动屏幕的时候View会被重用 (新滚动出来的view行就是上面消失的view对象) * * 主要作用:1 加载行的布局view 2 加载行中每个控件的数据 3 重用convertView对象 * */ @Override public View getView(final int position, View convertView, ViewGroup parent) { ViewHolder holder; // 观察convertView随ListView滚动情况 Log.v("MyListViewBase", "getView " + position + " " + convertView); if (convertView == null) { convertView = mInflater.inflate(R.layout.simple_list_view_baseadapter, null); holder = new ViewHolder(); /* 得到各个控件的对象 */ holder.title = (TextView) convertView .findViewById(R.id.ItemTitle); holder.text = (TextView) convertView .findViewById(R.id.ItemText); holder.bt = (Button) convertView.findViewById(R.id.ItemButton); convertView.setTag(holder);// 绑定ViewHolder对象,就是讲当前的对象存储到convertView } else { holder = (ViewHolder) convertView.getTag();// 取出ViewHolder对象 } /* 设置TextView显示的内容,即我们存放在动态数组中的数据 */ holder.title.setText(listData.get(position).get("ItemTitle") .toString()); holder.text.setText(listData.get(position).get("ItemText") .toString()); /* 为Button添加点击事件 */ holder.bt.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { Log.v("MyListViewBase", "你点击了按钮" + position); // 打印Button的点击信息 } }); return convertView; } } /* 存放控件 */ public final class ViewHolder { public TextView title; public TextView text; public Button bt; } }
相关推荐
### C# ListView 控件使用详解 #### 一、概述 `ListView` 控件是一种非常强大的 Windows Forms 控件,用于以多种视图(如图标、详细信息、列表等)展示项目集合。它支持自定义列、排序、筛选等功能,并且可以轻松...
winform c# listview控件使用范例源码,包括以下范例,listview控件的各种高级使用范例,很齐全。 ActiveGrid.rar ColorListBox.zip DragDropListView.rar ExCheckedListBox.rar EXListView.rar ...
在这个“ListView控件使用测试”项目中,我们将深入探讨如何在VB环境下有效地利用ListView控件,特别是其报告视图的运用。 在VB(Visual Basic)环境中,ListView控件是通过System.Windows.Forms命名空间下的...
在本文中,我们将深入探讨ListView控件的基本使用方法,包括创建列头、添加项和子项,以及读取选中项的信息。 首先,创建ListView的列头是非常关键的步骤,它定义了数据的分类。例如,你可以通过以下代码创建一个...
加载数据是ListView控件使用的最后一步,通常涉及从外部数据源读取数据并将其插入到控件中。这里以从Access数据库加载数据为例: ```vba Sub ListDisp() Dim cn As Object, rs As Object, sql As String, Itm Set...
C#ListView控件使用简单例子源码(VS2008及以上版本). 程序实现功能:选择以“大图标”、“小图标”、“详细信息”、“列表”形式显示项;添加、删除、清空项。 (ps:本人也是正在学习C#编程,顺便分享一下学习所得;...
3. 使用 ImageList 控件提供图像资源:ImageList 控件用于提供图像资源,供 TreeView 和 ListView 控件使用。 ImageList 控件可以添加多个图像资源,每个图像资源都有一个唯一的索引值。TreeView 和 ListView 控件...
首先,ListView控件的基础使用包括在设计界面中添加控件、设置其属性以及响应事件。在VB6.0的工具箱中找到ListView控件,将其拖放到窗体上。常见的属性有:`View`用于设置视图模式,`ColumnHeaders`用于定义列头,`...
通过以上步骤,我们就可以在C# WinForm的ListView控件中实现使用CheckBoxes属性的单选功能。这种方法简单有效,且易于理解和维护。不过,需要注意的是,对于大量数据的ListView,频繁的ItemChecked事件可能会导致...
在WPS Office中,有时会遇到不同版本的内置控件不兼容的问题,比如日期控件和ListView控件。本教程将详细介绍如何在VBA中注册并使用这些控件,以克服兼容性问题。 1. **VBA日期控件**: VBA中的日期控件通常指的是...
本教程将详细讲解如何在安卓手机上使用ListView控件,从基础到进阶,通过四个案例来帮助开发者掌握其精髓。 **一、ListView基本使用** 1. **布局文件**:首先,在XML布局文件中添加ListView,例如`activity_main....
VC++2008 ListView控件使用详解 ListView控件是VC++2008中常用的控件之一,用于显示列表信息。在VC++2008中,ListView控件可以通过设置扩展样式来实现各种展示效果,例如网格线、整行选择、始终显示选择项等。 ...
在这个教程中,我们将深入探讨如何在Visual Studio 2008环境下使用ListView控件进行添加、删除以及按列进行升序或降序排列的操作。 首先,让我们了解ListView控件的基本结构。ListView由多个列(ColumnHeader)和行...
以上就是关于ListView控件的基本使用及结合数据库的实例介绍。通过这个例子,你可以了解到如何在Android应用中创建、填充ListView,并结合SQLite数据库进行数据管理。这只是一个基础的示例,实际项目中可能需要根据...
环境:Windows XP SP3、JDK 1.6、Android SDK...目的:熟悉ListView控件的用法--使用ListView必须让Activity继承ListActivity类,并且在main.xml布局描述文档中,ListView类的android.id必须是"@+id/android:list”值。
在C#编程中,ListView控件是一个非常常用且功能强大的组件,主要用于展示数据集,它提供了多种视图模式,如大图标、小图标等,并支持添加、删除项以及复选框功能。本教程将深入讲解如何利用C#的ListView控件进行开发...
开发环境:Win7,VS2008 ...为控件中的项分组;添加、删除(选中项)、清空项。 (ps:本人也是正在学习C#编程,顺便分享自己的学习成果给大家,希望能给大家有所帮助~~,另外感觉代码结构有些混乱~~)
总之,`TreeView`和`ListView`控件在Windows编程中扮演着重要的角色,通过熟练掌握它们的使用,可以创建出功能丰富的文件管理类应用程序。在实际开发中,结合具体的编程语言和框架,如MFC、WinForms、WPF等,会有...
下面将详细介绍ListView控件的使用方法、特性以及如何在.NET环境中进行操作。 1. 添加和删除列 在ListView控件中,数据通常以列的形式展示。你可以通过调用`Columns`属性来添加新的列。例如: ```csharp ...
ListView 控件可有 4 种不同的视图显示方法 ListView 控件是 Windows 操作系统中的一种常用控件,能够显示大量的数据,并提供了多种视图显示方法。根据不同的应用场景,可以选择适合的视图显示方法。 一、视图显示...