Android中的ListView使用案例(SimpleAdapter实现)
2015-05-31 10:21
645 查看
ListView是可以垂直的滚动的显示一组列表的内容,其中的每一个条目可以是一个单独的组件,也可以是由多个组件组成的组合控件。
实现一个ListView控件的步奏:
1、准备ListView所要显示的数据,一般为一维或二维动态数组。
2、构建适配器,由于ListView中的每一个条目可以很简单,也可以很复杂,根据需要可以选择ArrayAdapter、SimpleAdapter、或者BaseAdapter。
3、使用setAdapter为一个ListView控件设置适配器。
4、为ListView添加监听器。
下面看具体的案例:
需要说明的是:该ListView的id为@android:id/list,否则NullPointException
实现一个ListView控件的步奏:
1、准备ListView所要显示的数据,一般为一维或二维动态数组。
2、构建适配器,由于ListView中的每一个条目可以很简单,也可以很复杂,根据需要可以选择ArrayAdapter、SimpleAdapter、或者BaseAdapter。
3、使用setAdapter为一个ListView控件设置适配器。
4、为ListView添加监听器。
下面看具体的案例:
创建主界面,添加ListView控件
文件名称为:activity_main.xml需要说明的是:该ListView的id为@android:id/list,否则NullPointException
[code]<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context=".MainActivity" > <ListView android:id="@android:id/list" android:layout_width="fill_parent" android:layout_height="wrap_content" ></ListView> </LinearLayout>
创建条目界面
文件名称为:item.xml[code]<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" android:orientation="horizontal" > <ImageView android:contentDescription="@null" android:id="@+id/img" android:layout_width="wrap_content" android:layout_height="wrap_content"/> <LinearLayout android:orientation="vertical" android:layout_width="wrap_content" android:layout_height="wrap_content" > <TextView android:id="@+id/title" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textColor="#CCCC99"/> <TextView android:id="@+id/info" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textColor="#CCCC99" /> </LinearLayout> </LinearLayout>
具体逻辑代码
[code]package com.yangzi.listview; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import android.app.ListActivity; import android.os.Bundle; import android.view.View; import android.widget.AdapterView; import android.widget.AdapterView.OnItemClickListener; import android.widget.ListView; import android.widget.SimpleAdapter; public class MainActivity extends ListActivity{ private ListView list; @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //找到ListView控件 list = (ListView)findViewById(android.R.id.list); //生成适配器的item和动态数组对应元素 构造函数原型:public SimpleAdapter (Context context, List<? extends Map<String, ?>> data, int resource, String[] from, int[] to) 参数说明: context(this) 当前Activity对象 data(getData() ) 要显示的数据,List集合类型 resource(R.layout.item) 条目的布局文件 from(新建的数组) data参数中Map的键名,要和生成数据中Map的键名一致 to (新建的数组) 条目布局文件中用于显示的控件 */ SimpleAdapter adapter = new SimpleAdapter( this, getData(), R.layout.item, new String[]{"img","title","info"}, new int[]{R.id.img,R.id.title,R.id.info}); //设置适配器 list.setAdapter(adapter); //设置监听事件 list.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) { Map<String,Object> clkmap = (Map<String,Object>)arg0.getItemAtPosition(arg2); setTitle(clkmap.get("title").toString()+"的网址是:"+clkmap.get("info").toString()); } }); } private List<Map<String,Object>> getData(){ //这里可以看做对应ListView控件中的每一条Item ArrayList<Map<String,Object>> listitem = new ArrayList<Map<String,Object>>(); //这里可以看做ListView控件中的每一条Item中的具体数据 Map<String,Object> map = new HashMap<String, Object>(); map.put("img", R.drawable.xx);//放置img map.put("title", "百度");//放置title map.put("info", "http://www.baidu.com");//放置info listitem.add(map);//一条记录设置好了,就添加进去 map = new HashMap<String, Object>(); map.put("img", R.drawable.xx); map.put("title", "新浪"); map.put("info", "http://www.sina.com.cn"); listitem.add(map); //下面为了更明显的看到ListView控件的效果,使用循环添加多个记录 for (int i = 0; i < 10; i++) { map = new HashMap<String, Object>(); map.put("img", R.drawable.xx); map.put("title", "我的网站"+i); map.put("info", "http://www.sina.com.cn@"+i); listitem.add(map); } return listitem; } }
相关文章推荐
- Android动画原理分析
- Android 手写签名和裁剪
- Android中Activity启动过程探究
- Android使用ViewFlipper实现左右滑动效果面
- android好用模拟器genymotion安装过程
- Android View 绘制流程
- Android中实现滑动翻页—使用ViewFlipper
- 使用 ARChon 运行时环境在 Ubuntu 上运行 Android 应用
- Android TextView里直接显示图片的三种方法
- 【Android】工程中文件的关联性
- 菜鸟学Android笔记(十一):web开发概述
- Android IOC模块,利用了Java反射和Java注解
- Android loading界面的一种加载动态图片的方式
- android studio如何导入第三方库slidingmenu(gradle项目)
- Android IOC模块,利用了Java反射和Java注解
- Android 纹理定距离移动
- android Universal-Image-Loader框架学习(下)
- Android(java)学习笔记96:如何改变spinner系统自带的字体和颜色
- Android-Activity启动过程
- 菜鸟学Android笔记(十):Schema语法