ListView和SimpleAdapter

在Android中当我们需要在界面上显示列表内容,则要使用ListView控件。 本文主要介绍如何使用ListView控件来显示自己想要的内容。

本文的最终成果如下图所示,当用户点击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.

ListView和SimpleAdapter,布布扣,bubuko.com

时间: 2024-10-03 13:39:51

ListView和SimpleAdapter的相关文章

高级控件【安卓5】——滚动视图、列表视图[ListView、SimpleAdapter类]

滚动视图 <ScrollView android: layout_width="fill_parent" android: layout_height="fill_parent"> </ScrollView> 滚动试图指的是提供一个专门的容器,可以装下多于屏幕宽度的组件,而后采用拖拽的方式 显示所有在ScrollView中的组件 注意:滚动视图中只能有一个组件 列表视图[ListView.SimpleAdapter类] 1.ListView控

ListView的SimpleAdapter详解

ListView的两个职责:1.将数据添加到布局中:2.响应用户的选择点击操作 点击任一选项时 响应用户的点击操作改变标题栏显示 源代码ListViewSimpleAdtActivity.java public class ListViewSimpleAdtActivity extends Activity { // private List<String> data = new ArrayList<String>(); @Override public void onCreate

ListView之SimpleAdapter

1.SimpleAdapter是ArrayList和ListView的桥梁,这个ArrayList礼拜的每一项都是一个Map<String,?>类型.ArrayList当中的每一项Map对象都和ListView里边的每一项进行数据绑定一一对应. 2.SimpleAdapter的构造函数: SimpleAdapter(Context  context, List<? extends Map<String, ?>>  data, int resource, String[]

ListView 搭配SimpleAdapter

这是SimplerAdapter的构造函数 public SimpleAdapter(Context context, List<? extends Map<String, ?>> data, @LayoutRes int resource, String[] from, @IdRes int[] to) { mData = data; mResource = mDropDownResource = resource; mFrom = from; mTo = to; mInflat

View(视图)——ListView之 SimpleAdapter

一.概念 列表视图:用来显示多个可滑动项列表的ViewGroup:需要适配器Adapter 将集合中数据和每一个Item所对应的布局动态适配到ListView中进行显示. 1 <?xml version="1.0" encoding="utf-8"?> 2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 3 xmlns:tools=

listview使用SimpleAdapter显示图片和文字

package com.example.listview_8; 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.Menu; import android.view.MenuItem; import a

ListView之SimpleAdapter的使用

SimpleAdapter(Context context, List<? extends Map<String, ?>> data, int resource, String[] from, int[] to) 参数context:上下文,比如this.关联SimpleAdapter运行的视图上下文 参数data:Map列表,列表要显示的数据,它是包含Map类型的元素的List集合,并且要求Map的键必须是String 类型的. 参数resource:ListView单项布局文件

android之ListView和SimpleAdapter的组合使用

SimpleAdapter是简单适配器.可以将准备好的数据显示在ListView中.更多信息可以看看Android 官方API开发文档. 示例说明:在SimpleAdapterListViewActivity.java中的内容: package com.zzh.day_listview; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import

ListView的SimpleAdapter

SimpleAdapter adapter = new SimpleAdapter{ this, list, R.id.lv, String[], int[] } Bug处理:当ListView布局中出现按钮时,会出现按钮抢夺了行的点击事情,导致点击行后无响应.这时需要设置descendantFocusability=“blockDescendants",使行能够获得焦点 原文地址:https://www.cnblogs.com/xxie12/p/11484268.html