ListView和SimpleAdapter
2014-05-15 13:58
141 查看
在Android中当我们需要在界面上显示列表内容,则要使用ListView控件。 本文主要介绍如何使用ListView控件来显示自己想要的内容。
本文的最终成果如下图所示,当用户点击ListView中的内容时,控制台将会输出相应的Item名字。
![](http://img.blog.csdn.net/20140515133849937?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvd3liX2hhcmR3b3JraW5n/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
![](http://img.blog.csdn.net/20140515133855781?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvd3liX2hhcmR3b3JraW5n/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
在layout当中,我们有两个xml文件,分别为 activity_main 和 simple_item 其中在 前者中创建了一个ListView 控件,在后者中则定义了ListView 中所要显示的列表项,在本项目中为两个TextView.
activity_main.xml代码如下
simple_item.xml 代码如下
<?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="wrap_content"
android:orientation="vertical" >
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
android:id="@+id/name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="10dp"
/>
<TextView
android:id="@+id/desc"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="10dp"
/>
</LinearLayout>
</LinearLayout>
可以这么认为,simple_item 布局是在activity_main里面进行的布局。
MainActivity.java 代码如下
在Java代码当中,首先创建了两个String数组,然后利用Map集合把他们封装起来。最后把它们绑在SimpleAdapter中。
重点看SimpleAdapter构造函数。
一共有五个参数。
第一个参数context,设置要绑定的View所在的Context. 这里使用了this表示就绑定在这个Activity上。
第二个参数list,设置一个List集合与之绑定。该List集合中存放着要在列表中显示的内容。
第三个参数resource,指定一个界面布局的ID,这里使用了simple_item文件作为列表项组件。
第四个参数from,指定提取Map集合中哪些key所对应的value来生成列表项。
第五个参数to,该参数决定填充哪些组件。这里用来填充ListView的是simple_item中的两个TextView.
本文的最终成果如下图所示,当用户点击ListView中的内容时,控制台将会输出相应的Item名字。
在layout当中,我们有两个xml文件,分别为 activity_main 和 simple_item 其中在 前者中创建了一个ListView 控件,在后者中则定义了ListView 中所要显示的列表项,在本项目中为两个TextView.
activity_main.xml代码如下
<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" tools:context="${packageName}.${activityClass}" > <!-- 定义一个List --> <ListView android:id="@+id/mylist" android:layout_width="fill_parent" android:layout_height="wrap_content" android:drawSelectorOnTop="false" /> </LinearLayout>
simple_item.xml 代码如下
<?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="wrap_content"
android:orientation="vertical" >
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
android:id="@+id/name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="10dp"
/>
<TextView
android:id="@+id/desc"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="10dp"
/>
</LinearLayout>
</LinearLayout>
可以这么认为,simple_item 布局是在activity_main里面进行的布局。
MainActivity.java 代码如下
package com.example.listactivitytest; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import android.app.Activity; import android.os.Bundle; import android.view.View; import android.widget.AdapterView; import android.widget.AdapterView.OnItemClickListener; import android.widget.ArrayAdapter; import android.widget.ListView; import android.widget.SimpleAdapter; public class MainActivity extends Activity { private String[] names = new String[]{ "孙悟空","猪八戒","沙僧","唐僧" }; private String[] descs = new String[]{ "牛逼","逗比","苦逼","装逼" }; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //创建一个list集合,List集合的元素是Map List<Map<String,Object>> listItems = new ArrayList<Map<String,Object>>(); //为Map赋值 for(int i = 0; i <names.length;i++){ Map<String,Object> listItem = new HashMap<String,Object>(); listItem.put("personName", names[i]); listItem.put("desc", descs[i]); listItems.add(listItem); } //创建一个SimpleAdapter SimpleAdapter simpleAdapter = new SimpleAdapter(this, listItems, R.layout.simple_item, new String[] {"personName","desc"}, new int[] {R.id.name,R.id.desc}); ListView list = (ListView)findViewById(R.id.mylist); //为ListView 设置Adapter list.setAdapter(simpleAdapter); list.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { System.out.println("用户点击了 "+ names[position]); } }); } }
在Java代码当中,首先创建了两个String数组,然后利用Map集合把他们封装起来。最后把它们绑在SimpleAdapter中。
重点看SimpleAdapter构造函数。
一共有五个参数。
第一个参数context,设置要绑定的View所在的Context. 这里使用了this表示就绑定在这个Activity上。
第二个参数list,设置一个List集合与之绑定。该List集合中存放着要在列表中显示的内容。
第三个参数resource,指定一个界面布局的ID,这里使用了simple_item文件作为列表项组件。
第四个参数from,指定提取Map集合中哪些key所对应的value来生成列表项。
第五个参数to,该参数决定填充哪些组件。这里用来填充ListView的是simple_item中的两个TextView.
相关文章推荐
- Android使用SimpleAdapter更新ListView里面的Drawable元素
- Android学习笔记之——ListView 的两种适配器ArrayAdapter和SimpleAdapter
- Android使用SimpleAdapter更新ListView里面的Drawable元素
- 类ListView和SimpleAdapter
- Android入门:ListView(SimpleAdapter实现)
- Android简易实战教程--第十八话《ListView显示,简单的适配器SimpleAdapter》
- ListView与SimpleAdapter
- 2012.9.22 安卓游戏开发笔记(八)_ListView_SimpleAdapter
- Android入门:ListView(SimpleAdapter实现)
- 基于SimpleAdapter与BaseAdapter的不同ListView实现
- android ListView 重写 SimpleAdapter 显示图片 异步加载及文字处理
- android listview组件 ArrayAdapter,SimpleAdapter
- AdapterView及其子类之四:基于ListView及SimpleAdapter实现列表
- Android简易实战教程--第十八话《ListView显示,简单的适配器SimpleAdapter》
- ListView使用SimpleAdapter加载非drawable资源图片
- Android UI:ListView - SimpleAdapter实例详解
- ListView(SimpleAdapter)
- 安卓——ArrayAdapter和SimpleAdapter实现ListView
- ListView应用--SimpleAdapter
- android中ListView_SimpleAdapter