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);
	}
}



郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。