Android控件开发之四----ListView(1)

今天我们介绍下,在开发中长用到的而且非常重要的空间ListView;

A view that shows items in a vertically scrolling list. The items come from the ListAdapter associated with this view(自动包含滚动条,数据和视图是通过迭代器)

首先介绍下ListView的一些属性:

android:cacheColorHint="#00000000"
这个属性的作用:在你拉动listview的时候,可能会选中一些条例,会出现黑色的背影,只要把他设置成透明就可以了
android:dividerHeight="10dip"
android:listSelector="@drawable/drawable_backgroud"
设置分割线的属性,dividerHeight分割线的高度,分割线的样式,可以用drawable

android:headerDividersEnabled="false"
android:footerDividersEnabled="false"
设置分割线,headerDividersEnabled头顶是否需要分割线,footerDividersEnabled尾部是否需要分割线 

android:listSelector="@drawable/drawable_backgroud"
设置选中时显示的颜色或背景


1.首先介绍下自己布局和美化的ListView

Android控件开发之四----ListView(1)_第1张图片Android控件开发之四----ListView(1)_第2张图片

上代码

package com.potato;

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.TextView;
import android.widget.Toast;

public class ListViewArrayAdapterDemoActivity extends Activity
{
	String[]				mStrData;
	ListView				mListView	= null;
	ArrayAdapter<String>	adapter		= null;

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

		mListView = (ListView) findViewById(android.R.id.list);

		mStrData = this.getResources().getStringArray(R.array.list_view_data); // 注1
		if (mStrData.length == 0) 		// 注2
		{
			mListView.setEmptyView((TextView)findViewById(android.R.id.empty));
		}
		// 通过adapter使得数据和listview相连接
		// simple_list_item_1是系统自定义的布局,无需自己的layout
		// 可以在资源中定义string数组(这里是后者),或者直接在代码中定义
		adapter = new ArrayAdapter<String>(this,                        // 注3
				android.R.layout.simple_list_item_1, mStrData);
		mListView.setAdapter(adapter);          // 注4

		// ListItem的点击的响应
		mListView.setOnItemClickListener(new OnItemClickListener()    // 注5
		{
			@Override
			public void onItemClick(AdapterView<?> adapterView, View view,
					int position, long id)
			{
				Toast.makeText(ListViewArrayAdapterDemoActivity.this, mStrData[position],
						Toast.LENGTH_LONG).show();
			}
		});

	}
}

注1:

从资源中读取数组数据的方法

mStrData = this.getResources().getStringArray(R.array.list_view_data); 

注2:

当listveiw没有数据,为空的时候,则会用一个andorid:id/empty的TextView显示

<TextView android:id="@id/android:empty" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:text="对不起,没有数据显示"/>   
mListView.setEmptyView((TextView)findViewById(android.R.id.empty));
setEmptyView中参数不能使用其他的View,只能使用系统自定义的id为android.R.id.empty的View;

注3:

ArrayAdapter,迭代器,这里是用于存储string类型的数据

adapter = new ArrayAdapter<String>(this,                        // 注3
				android.R.layout.simple_list_item_1, mStrData);
三个参数,第一是context,第二是ListView中每条item显示的布局,第三就是需要显示的数据;


注4:

mListView.setAdapter(adapter);
ListView和数据关联


注5:

选中某个item

mListView.setOnItemClickListener(new OnItemClickListener()    // 注5
		{
			@Override
			public void onItemClick(AdapterView<?> adapterView, View view,
					int position, long id)
			{
				Toast.makeText(ListViewArrayAdapterDemoActivity.this, mStrData[position],
						Toast.LENGTH_LONG).show();
			}
		});

这里的onItemClick参数中,postion是指你选中的item在ListView显示的第几项,这个用处比较大;


main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >
    <ListView
        android:id="@android:id/list"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:drawSelectorOnTop="false"
        android:background="@drawable/drawable_backgroud"
        android:cacheColorHint="#00000000"
        android:divider="@drawable/drawable_backgroud"
        android:dividerHeight="10dip"
        android:listSelector="@drawable/drawable_backgroud"
        android:headerDividersEnabled="true"
        android:footerDividersEnabled="true"
        android:fadingEdge="vertical"  
        />
		<!-- listview的上边和下边有黑色的阴影 android:fadingEdge="none"  -->
	<TextView android:id="@id/android:empty" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:text="对不起,没有数据显示"/>    
</LinearLayout>

显示的数据list_view_data.xml(放在values下)

<?xml version="1.0" encoding="utf-8"?>

<resources>
    <string-array name="list_view_data">
       <item>Aries 白羊座(3月21日~4月20日)</item> 
       <item>Taurus 金牛座(4月21~5月21日)</item> 
       <item>Gemini 双子座(5月22日~6月21日)</item> 
       <item>Cancer 巨蟹座(6月22日~7月22日)</item> 
       <item>Leo 狮子座(7月23日~8月23日)</item> 
       <item>Virgo 处女座(8月24日~9月23日)</item> 
       <item>Gemini Libra 天秤座(9月24日~10月23日)</item> 
       <item>Scorpio 天蝎座(10月24日~11月22日)</item> 
       <item>Sagittarius 射手座(11月23日~12月21日)</item> 
       <item>Capricorn 摩羯座(12月22日~1月20日)</item> 
       <item>Aquarius 水瓶座(1月21日~2月19日)</item> 
       <item>Pisces 双鱼座(2月20日~3月20日)</item> 
    </string-array>
</resources>

代码下载地址:download.csdn.net/detail/alex0203/3756574


如有问题请留言或者发邮件

邮箱:[email protected]


你可能感兴趣的:(android,ListView,list,String,layout,encoding)