Android控件开发之四----ListView(1)
16lz
2021-01-23
今天我们介绍下,在开发中长用到的而且非常重要的空间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;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
更多相关文章
- Android清除本地数据缓存代码案例
- android通过httpClient请求获取JSON数据并且解析
- android五种布局模式
- android nosql 数据库对比 Realm vs ObjectBox
- Android Layout_weight 属性
- 关于CoordinatorLayout展开与折叠相关属性