`
zyoo005
  • 浏览: 18571 次
  • 性别: Icon_minigender_1
  • 来自: 内蒙古
社区版块
存档分类
最新评论

android ListView几个比较特别的属性

阅读更多

 

由于这两天在做listView的东西,所以整理出来一些我个人认为比较特别的属性,通过设置这样的属性可以做出更加美观的列表

首先是stackFromBottom属性,这只该属性之后你做好的列表就会显示你列表的最下面,值为true和false

android:stackFromBottom="true"             

第二是 transciptMode属性,需要用ListView或者其它显示大量Items的控件实时跟踪或者查看信息,并且希望最新的条目可以自动滚动到可视范围内。通过设置的控件transcriptMode属性可以将Android平台的控件(支持ScrollBar)自动滑动到最底部。
 android:transcriptMode="alwaysScroll"    

第三cacheColorHint属性,很多人希望能够改变一下它的背景,使他能够符合整体的UI设计,改变背景背很简单只需要准备一张图片然后指定属性 android:background="@drawable/bg",不过不要高兴地太早,当你这么做以后,发现背景是变了,但是当你拖动,或者点击list空白位置的时候发现ListItem都变成黑色的了,破坏了整体效果。

如果你只是换背景的颜色的话,可以直接指定android:cacheColorHint为你所要的颜色,如果你是用图片做背景的话,那也只要将android:cacheColorHint指定为透明(#00000000)就可以了

第四divider属性,该属性作用是每一项之间需要设置一个图片做为间隔,或是去掉item之间的分割线

 android:divider="@drawable/list_driver"  其中  @drawable/list_driver 是一个图片资源,如果不想显示分割线则只要设置为android:divider="@drawable/@null" 就可以了

第五fadingEdge属性,上边和下边有黑色的阴影

android:fadingEdge="none" 设置后没有阴影了~

 第五scrollbars属性,作用是隐藏listView的滚动条,

android:scrollbars="none"与setVerticalScrollBarEnabled(true);的效果是一样的,不活动的时候隐藏,活动的时候也隐藏

第六fadeScrollbars属性,android:fadeScrollbars="true"  配置ListView布局的时候,设置这个属性为true就可以实现滚动条的自动隐藏和显示。

 

 

 

android开发中ListView是比较常用的组件,它以列表的形式展示具体内容,并且能够根据数据的长度自适应显示。

列表的显示需要三个元素:

1.ListVeiw:用来展示列表的View。

2.适配器:用来把数据映射到ListView上的中介。

3.数据:具体的将被映射的字符串、图片,或者基本组件。

根据列表的适配器类型,列表分为三种,ArrayAdapter,SimpleAdapter和SimpleCursorAdapter
其中以ArrayAdapter最为简单,只能展示一行字。SimpleAdapter有最好的扩充性,可以自定义出各种效果。 SimpleCursorAdapter可以认为是SimpleAdapter对数据库的简单结合,可以方面的把数据库的内容以列表的形式展示出来。

一、
ArrayAdapter代码详解

首先在布局文件main.xml中定义ListView标签:


<ListView


android:id="@+id/listview"


android:layout_width="fill_parent"


android:layout_height="wrap_content"


/>

代码实现:

public
class ArrayAdapterList extends Activity {


/** Called whenthe activity is first created. */


@Override


public
void onCreate(BundlesavedInstanceState) {


super.onCreate(savedInstanceState);


setContentView(R.layout.
main);


ListView listView = (ListView)findViewById(R.id.
listview);


//定义一个数组


String[] arr = {
"忘情水","冰雨","一起走过的日子"};


//将数据封装到ArrayAdapter


ArrayAdapter<String> arrayAdapter = 
newArrayAdapter<String>(this, android.R.layout.simple_list_item_1, arr);


//为ListView设置Adapter


listView.setAdapter(arrayAdapter);


}

}

上面代码使用了ArrayAdapter(Context context, int textViewResourceId, T[]objects)来装配数据,要装配这些数据就需要一个连接ListView视图对象和数组数据的适配器来完成两者的适配工作,ArrayAdapter的构造需要三个参数,依次为this,布局文件(注意这里的布局文件描述的是列表的每一行的布
局,android.R.layout.simple_list_item_1是系统定义好的布局文件只显示一行文字,数据源(一个数组)。同时用setAdapter()完成适配的最后工作。

textViewResourceId该参数决定每个列表项的外观形式,Android为该属性提供了如下属性值:

simple_list_item_1:每个列表项都是一个普通的TextView

simple_list_item_2:每个列表项都是一个普通的TextView(字体略大)

simple_list_item_multiple_choice:每个列表项都是带多选框的文本

simple_list_item_single_choice:每个列表项都是带多单选按钮的文本

simple_list_item_checked:每个列表项都是一个已勾选的列表项


运行结果: QQ截图20110801184631.png

 

 

二、SimpleAdapter代码详解

simpleAdapter的扩展性最好,可以定义各种各样的布局出来,可以放上ImageView(图片),还可以放上Button(按 钮),CheckBox(复选框)等等。下面的代码都直接继承了ListActivity如果程序的窗口仅仅为了显示一个列表,则可以直接让Activity继承ListActivity来实现,ListActivity的子类无需调用setContentView()来显示某个页面,而是可以直接传入一个AdapterListActivity的子类就呈现出一个列表。

布局文件main.xml;

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

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"


android:orientation="vertical"


android:layout_width="fill_parent"


android:layout_height="fill_parent"


>

<ListView


android:id="@+id/android:list"


android:layout_width="fill_parent"


android:layout_height="wrap_content"


/>

<ImageView


android:id="@+id/header"


android:layout_width="wrap_content"


android:layout_height="wrap_content"


android:paddingLeft="10dp"


/>

<TextView


android:id="@+id/name"


android:layout_width="wrap_content"


android:layout_height="wrap_content"


android:paddingLeft="10dp"


/>

</LinearLayout>

在此布局文件中,应包含一个id”@+id/android:list”ListView,此idAndroid系统内置ID

代码实现

public
class SimpleAdapterList extends ListActivity {

/** Called whenthe activity is first created. */


//声明姓名和头像的数组变量


private String [] names = new String[]{"刘德华","张学友","黎明","郭富城"};


private
int[] imageIds = new
int[]{R.drawable.header01,R.drawable.header02,R.drawable.header03,R.drawable.header04};


@Override


public
void onCreate(BundlesavedInstanceState) {


super.onCreate(savedInstanceState);


//创建一个List集合


List<Map<String,Object>> listItems = 
newArrayList<Map<String,Object>>();


for(int i=0; i<names.length;i++){


Map<String,Object> listItem = 
new HashMap<String,Object>();



listItem.put(
"header"imageIds);



listItem.put(
"name"names);



listItems.add(listItem);


}


//创建一个SimpleAdapter


SimpleAdapter simpleAdapter = 
new SimpleAdapter(this, listItems, R.layout.mainnew String[]{"header","name"}, new
int[]{R.id.header,R.id.name});


setListAdapter(simpleAdapter);


}

}

SimpleAdapter参数说明:

SimpleAdapter(Contextcontext, List<? extends Map<String, ?>> data, int resource,String[] from, int[] to)

data:该参数是一个List<? extendsMap<String, ?>>类型的集合对象,该集合中的每个对象生成一个列表项

resource:该参数指定使用的界面布局文件的ID

from:该参数是一个String[]类型的参数,该参数决定提取Map<String,?>对象中那些key对应的value来生成列表项

to:该参数决定使用哪些View组件来组合成一个列表项

 

运行结果: QQ截图20110801184644.png

分享到:
评论

相关推荐

    Android 的一些特效

    Android 中几个常用属性的设置.doc android 读取文件内容操作.doc Android 选项卡效果.doc Android中 信息的输出——Log.v的使用.doc Android手机连接电脑详细图文教程.doc android横竖屏总结.doc Android 的...

    Android的一些特效资料

    Android 中几个常用属性的设置.doc android 读取文件内容操作.doc Android 选项卡效果.doc Android中 信息的输出——Log.v的使用.doc Android手机连接电脑详细图文教程.doc android横竖屏总结.doc Android 的手势...

    Android 中ListView setOnItemClickListener点击无效原因分析

    前言 最近在做项目的过程中,在使用listview的时候遇到了设置item监听事件的时候在没有回调onItemClick 方法的问题。我的情况是在item中有一...2、在item最外层添加属性 android:descendantFocusability=”blocksDesce

    Android中Listview点击item不变颜色及设置listselector 无效的解决方案

    这是同一个问题,Listview中点击item是会变颜色的,因为...2、listview中listselector属性的效果被覆盖了,比如列表的Item为一个占满单元格的ImageView的时候,ImageView如果有内容那么listSelector的效果就会被挡住 这

    Android实现有视差效果的ListView

    视差效果是什么? 所谓的视差效果在Web设计和移动应用中都非常常见,我们在一些主要的平台都可以发现它的身影,从Windows Phone到iOS乃至Android。...首先自定义几个属性,在之后可以用到: &lt;?xml versi

    解决android Listview的item中最外层Margin失效的问题

    包含有margin的layout是正常的几个基础布局。 解决方案: 在你的listview里面加上下面代码 android:divider=#00000000 android:dividerHeight=10dp android:layout_marginLeft=10dp android:layout_marginRig

    effects_java_android_源码

    Android+的一些特效,这些特效代码有:Android中的ImageView边框、Android开发培训课件.ppt、android ListView详解.doc、android 读取文件内容操作.doc、Android 选项卡效果.doc、Android 中几个常用属性的设置

    android开发资料大全

    Android开发开发技巧之 EditText 属性、 ProgressBar 各种样式大全 android用户界面之EditText教程实例汇 android用户界面之ListView教程实例汇 android用户界面之Toast教程实例汇 android用户界面之AlarmManager...

    Android移动应用开发实验指导书.docx

    (2)掌握Intent的几种常用的属性。 (3)Android系统内置Intent的使用。 (4)了解Activity的生命周期 实验软、硬件环境 硬件:PC电脑一台; 配置:winxp或win7系统,内存大于4G,硬盘250G及以上 JDK1.7 、Eclipse...

    《Android应用开发》个人总结报告.doc

    Cursor前面说过,是一个指向数据源的随机迭代器,将View绑定到Cursor通常要设置这 样几个参数。一个是每一行的样式,称作Row Layout,其实就是一个普通的Layout的XML文件。还有就是一个列和现实控件的对应关系 。...

    Android移动应用开发实验指导书.docx.docx

    (2)掌握Intent的几种常用的属性。 (3)Android系统内置Intent的使用。 (4)了解Activity的生命周期 实验软、硬件环境 硬件:PC电脑一台; 配置:winxp或win7系统,内存大于4G,硬盘250G及以上 JDK1.7 、Eclipse...

    黑马程序员 安卓学院 万元哥项目经理 分享220个代码实例

    |--缓存优化之几种方案lastModified |--缓存优化之本地缓存优化(超过规定值或SD卡容量不够时) |--网络post提交查询请求 |--网络之HttpClient的get和post用法 |--网络之判断网络状态是否可用 |--网络之设置apn |--...

    Android 开发之旅:详解view的几种布局方式及实践

    我们对Android应用程序运行原理及布局文件可谓有了比较深刻的认识和理解,并且用“Hello World!”程序来实践证明了。在继续深入Android开发之旅之前,有必要解决前两篇中没有介绍的遗留问题:View的几种布局显示...

    Android流式布局FlowLayout详解

    现在商城类的APP几乎都要用到流式布局来实现选择属性功能,在我的demo中是通过FlowLayout工具类实现流式布局 使用起来非常简单,十几行代码就可以实现; 在我们的项目中大部分都是单选效果,为了防止用到多选,demo...

    Android应用开发中View绘制的一些优化点解析

    更严重的是,嵌入几个使  用 layout_weight属性的LinearLayout 将会导致大量的开销,因为每个子视图都需要被测量两次。这是反复解析  布局文件时重要的一点,例如在ListView或者GridView中使用时。  观察你的布局...

    Android中标签容器控件的实例详解

    根据对整个控件的效果分析,大致可以将控件分别从以下这几个角度进行分析: 1.首先涉及到自定义的ViewGroup,因为现有的控件没法满足我们的布局效果,就涉及到要重写onMeasure和onLayout,这里需要注意的问题是自定义...

    一款简单的 page 切换布局

    带着下面几个问题一起来看一下。1.自定义一个布局让其作为跟布局2.提供切换加载 loading、空白页 empty、错误页 errror、内容页 content功能3.怎么让其取管理上边的四个页面?4.contentView 怎么添加?5.如果我想...

    JAVA上百实例源码以及开源项目

    6个目标文件,EJB来模拟银行ATM机的流程及操作:获取系统属性,初始化JNDI,取得Home对象的引用,创建EJB对象,并将当前的计数器初始化,调用每一个EJB对象的count()方法,保证Bean正常被激活和钝化,EJB对象是用...

Global site tag (gtag.js) - Google Analytics