今天我们介绍下,在开发中长用到的而且非常重要的空间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;ListViewmListView= null;ArrayAdapter<String>adapter= null;@Overrideprotected 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); // 注1if (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,                        // 注3android.R.layout.simple_list_item_1, mStrData);mListView.setAdapter(adapter);          // 注4// ListItem的点击的响应mListView.setOnItemClickListener(new OnItemClickListener()    // 注5{@Overridepublic 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,                        // 注3android.R.layout.simple_list_item_1, mStrData);
三个参数,第一是context,第二是ListView中每条item显示的布局,第三就是需要显示的数据;


注4:

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


注5:

选中某个item

mListView.setOnItemClickListener(new OnItemClickListener()    // 注5{@Overridepublic 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


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

邮箱:ligexiao@gmail.com


更多相关文章

  1. Android清除本地数据缓存代码案例
  2. android通过httpClient请求获取JSON数据并且解析
  3. android五种布局模式
  4. android nosql 数据库对比 Realm vs ObjectBox
  5. Android Layout_weight 属性
  6. 关于CoordinatorLayout展开与折叠相关属性

随机推荐

  1. 解析Android中的XML
  2. Android(安卓)学习笔记——利用JNI技术在
  3. Android(安卓)XML解析学习——Dom方式
  4. Android中各种JAVA包的功能描述
  5. 安卓中一些常用的属性小结
  6. Android消息机制
  7. Android(安卓)内存泄露分析
  8. 五大媒体播放器的Android
  9. 《Android经验分享》周刊第12期
  10. android:padding 和 android:margin的区