今天我们介绍下,在开发中长用到的而且非常重要的空间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);
当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(); } });
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
如有问题请留言或者发邮件