Android---39---ListView的创建

ListView 是手机系统中使用非常广泛的一种组件,它以垂直列表的形式显示所有列表项。

创建ListView的两种方式;

直接创建

让Activity继承ListActivity。

1.基于数组的ListView:

在布局文件中这么写:

<!-- 设置使用红色的分隔条 -->
<!-- 使用数组资源给出列表 -->

<ListView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:divider="#f00"
android:dividerHeight="2px"
android:entries="@array/books"
android:headerDividersEnabled="false" />

2.使用ArrayAdapter创建ListView:

ArrayAdapter<String> adapter = new ArrayAdapter<String>(context, resource, objects)

三个参数:

Contex:上下文

resource:一个资源ID,该ID代表一个TextView,该TextView组件将作为ArrayAdapter的列表组件。

objects:数组或list:为多个列表提供数据

例:

import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.SimpleAdapter;

/**
 * ArrayAdapter演示
 *
 * @author Caesar
 *
 */
public class MainActivity extends Activity {

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);

		ListView mlistView = (ListView) findViewById(R.id.listview);

		String textArray[] = { "功能1", "功能2", "功能3", "功能4", "功能5", "功能6", "功能7",
				"功能8", "功能8", "功能8", "功能8", "功能8", "功能8", "功能8", "功能8", "功能8",
				"功能8", "功能8", "功能8", "功能8" };
		/**
		 * 定义数据适配器
		 *
		 *
		 * android.R.layout.simple_list_item_1:ListView的子条目显示的布局的ID
		 *
		 * textArray:显示在list中的数据
		 *
		 */

//		ArrayAdapter<String> adapter2 = new ArrayAdapter<>(context, resource, objects)
		ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
				android.R.layout.simple_list_item_1, textArray);

		mlistView.setAdapter(adapter);

	}
}

3.使用SimpleAdapter创建ListView:

SimpleAdapter simpadapter = new SimpleAdapter(Context context, List<? extends Map<String, ?>> data,
int resource, String[] from, int[] to);

context:上下文

data:listview绑定的数据

resource:子条目布局的id

from:String[] 类型的 数组    data中的map集合里的key

to: resource里的id。。

例:

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.widget.ListView;
import android.widget.SimpleAdapter;

public class MainActivity extends Activity {

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);

		ListView mlistView = (ListView) findViewById(R.id.listview);

		List<Map<String, Object>> data = new ArrayList<Map<String, Object>>();

		Map<String, Object> map = new HashMap<String, Object>();

		map.put("name", "张三1");
		map.put("icon", R.drawable.qq1);
		data.add(map);

		map = new HashMap<String, Object>();
		map.put("name", "张三2");
		map.put("icon", R.drawable.qq1);
		data.add(map);

		map = new HashMap<String, Object>();
		map.put("name", "张三3");
		map.put("icon", R.drawable.qq1);
		data.add(map);

		map = new HashMap<String, Object>();
		map.put("name", "张三4");
		map.put("icon", R.drawable.qq1);
		data.add(map);

		map = new HashMap<String, Object>();
		map.put("name", "张三5");
		map.put("icon", R.drawable.qq1);
		data.add(map);

		map = new HashMap<String, Object>();
		map.put("name", "张三2");
		map.put("icon", R.drawable.qq1);
		data.add(map);

		map = new HashMap<String, Object>();
		map.put("name", "张三3");
		map.put("icon", R.drawable.qq1);
		data.add(map);

		map = new HashMap<String, Object>();
		map.put("name", "张三4");
		map.put("icon", R.drawable.qq1);
		data.add(map);

		map = new HashMap<String, Object>();
		map.put("name", "张三5");
		map.put("icon", R.drawable.qq1);

		data.add(map);

		// public SimpleAdapter(Context context, List<? extends Map<String, ?>>
		// data, int resource, String[] from, int[] to) {

		SimpleAdapter adapter = new SimpleAdapter(this, // 上下文对象
				data, // listview绑定的数据
				R.layout.listview_item, // 子条目的布局的id
				new String[] { "name", "icon" },// String[] 类型 data中的map集合里的key
				new int[] { R.id.tv_name, R.id.iv_icon });// resource 中的id

		mlistView.setAdapter(adapter);

	}
}

4.让Activity去继承ListActivity:

如果程序的窗口只需要显示一个列表,则可以直接让Activity继承ListAactivity来实现。

ListActivity的子类无需setContentView()方法来显示某个界面,

而是直接传入一个内容Adapter,ListActivity的子类就呈现出一个表。

import android.app.Activity;
import android.app.ListActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.ArrayAdapter;

/**
 * 如果程序的窗口只需要显示一个列表,则可以直接让Activity继承ListAactivity来实现。
 * ListActivity的子类无需setContentView()方法来显示某个界面,
 * 而是直接传入一个内容Adapter,ListActivity的子类就呈现出一个表。
 *
 * @author Caesar
 *
 */
public class MainActivity extends ListActivity {

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);

		String arr[] = { "孙悟空", "猪八戒", "唐僧", "沙和尚" };

		ArrayAdapter<String> adapter = new ArrayAdapter<>(this,
				android.R.layout.simple_list_item_multiple_choice, arr);

		setListAdapter(adapter);
	}
}
时间: 2024-12-11 19:54:06

Android---39---ListView的创建的相关文章

Android中用ListView创建应用商店时的几个优化

package com.example.ex01_1; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.net.MalformedURLException; import java.net.URL; import java.net.URLConnection; import java.util.Arra

Android LIstView初次创建getview方法执行多次问题

写listview优化的时候,发现Listview初次创建的时候会多次执行getView方法. <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools&quo

Android之ListView异步加载图片且仅显示可见子项中的图片

折腾了好多天,遇到 N 多让人崩溃无语的问题,不过今天终于有些收获了,这是实验的第一版,有些混乱,下一步进行改造细分,先把代码记录在这儿吧. 网上查了很多资料,发现都千篇一律,抄来抄去,很多细节和完整实例都没看到,只有自己一点点研究了,总体感觉 android 下面要显示个图片真不容易啊. 项目主要实现的功能: 异步加载图片图片内存缓存.异步磁盘文件缓存解决使用 viewHolder 后出现的图片错位问题优化列表滚动性能,仅显示可见子项中的图片无需固定图片显示高度,对高度进行缓存使列表滚动时不会

Android之ListView&amp;ViewPager模拟新闻界面

模拟新闻 APP 的界面 1)写 ListView 之前先写布局: 这里有两种 Item 的布局: 1 <?xml version="1.0" encoding="utf-8"?> 2 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 3 android:layout_width="match_parent"

13、Android之ListView学习&#183;

1.XML文件中添加ListView (1)XML布局文件 <RelativeLayout 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_

Android 利用ListView制作带竖线的多彩表格

1.listview与GridView 其实Android本身是有表格控件(GridView)的,但是GridView的每一列的宽度被限定为一样宽,有时设计表格时,列宽不可能为同一宽度,所有可以用ListView控件去实现表格. 2.设计思路: listview的每一列都是由一个textview去实现,表格的竖线可以通过view控件来绘制.listview每一列的颜色相互不同可以通过复写Adapter的类,然后复写getview方法具体去实现. 3.先看一下效果图: 4.数据库操作部分可以看我之

Android资源文件之创建与访问

资料来源于官方api文档 Android资源文件之创建与访问 Android适配之创建别名资源 如果你想将某一资源用于多种设备配置(但是不想作为默认资源提供), 则无需将同一资源放入多个备用资源目录中.相反,可以(在某些情况下)创建备用资源,充当保存在默认资源目录下的资源的别名. 注: 并非所有资源都会提供相应的机制让你创建指向其他资源的别名.特别是, xml/目录中的动画资源.菜单资源.原始资源以及其他未指定的资源均不提供此功能. 例如,加入你有有一个应用图片icon.jpg, 并且需要不同区

【Android】ListView 顶部浮动栏效果.md

ListView 中有时需要在顶部固定一个浮动栏,当向上滑动 ListView 时,浮动栏固定在顶部,当向下滑动 ListView 到其 HeaderView 可见时,浮动栏成为ListView的一部分,与ListView一起滑动.效果如下: 实现思路 使用两个浮动栏,一个浮动栏(A)添加到 ListView 的 HeaderView中,另一个浮动栏(B)与ListView顶部对齐布局.当ListView下滑超过浮动栏时,隐藏浮动栏(B),此时用户看到的是浮动栏(A):当ListView上滑超过

Android使用ListView将数据显示到手机屏幕上

下面是一个LinearLayout,里面的内容超级简单,就是一个ListView <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=&qu

android之ListView使用

android之ListView ListView是android中比较常见并较为复杂的控件之一,它既有默认的模式,又可以实现自定义,通过该控件,可以使UI交互更加多样化,更加方便. 实现过程分为三步: 在activity的layout中设置ListView控件,设置控件Id为 list: 新建一个Layout的XML文件,在当中设置每一个条目的模式: 在代码中创建一个List的Hashmap对象,以条目名称为key,存入每一个条目中的内容: 创建一个SimpleAdapter对象,将创建的Li