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

上代码

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.youkuaiyun.com/detail/alex0203/3756574


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

邮箱:ligexiao@gmail.com


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值