天天看点

listview的又一次认识

总结先从listview开始吧,觉的listview是大多数人进入android的第一课,如果你也有心,我们可以一起探讨;

- ### 继承的关系可以打开以下链接看看

https://developer.android.com/reference/android/widget/ListView.html

没有耐心的人还是直接看下面吧

- ### 属性介绍

android:divider//在列表条目之间显示的drawable或color  

android:dividerHeight//用来指定divider的高度  

android:entries//构成ListView的数组资源的引用。对于某些固定的资源,这个属性提供了比在程序中添加资源更加简便的方式  

android:footerDividersEnabled//当设为false时,ListView将不会在各个footer之间绘制divider.默认为true。  

android:headerDividersEnabled//当设为false时,ListView将不会在各个header之间绘制divider.默认为true。 
android:cacheColorHint// 表明这个列表的背景始终以单一、固定的颜色绘制,可以优化绘制过程。  

android:choiceMode//为视图指定选择的行为。可选的类型有:none、singleChoice、multipleChoice、multipleChoiceModal。  

android:drawSelectorOnTop// 若设为true,选择器将绘制在选中条目的上层。默认为false。  

android:fastScrollEnabled// 设置是否允许使用快速滚动滑块。  

android:listSelector// 设置选中项显示的可绘制对象,可以是图片或者颜色属性。  

android:scrollingCache// 设置在滚动时是否使用绘制缓存。若设为true,则将使滚动表现更快速,但会占用更内存。默认为true。  


android:smoothScrollbar// 为真时,列表会使用更精确的基于条目在屏幕上的可见像素高度的计算方法。默认该属性为真,如果你的适配器需要绘制可变高的条目,他应该设为假。当该属性为真时,你在适配器在显示变高条目时,滚动条的把手会在滚动的过程中改变大小。当设为假时,列表只使用适配器中的条目数和屏幕上的可见条目来决定滚动条的属性。  

android:stackFromBottom// 设置GridView和ListView是否将内容从底部开始显示。  

android:textFilterEnabled// 当设为真时,列表会将结果过滤为用户类型。前提是这个列表的Adapter必须支持Filterable接口。  

android:transcriptMode//设置列表的transcriptMode.有如下选项可选:  
//(1)disabled          禁用TranscriptMode,也是默认值;  
//(2)normal             当新条目添加进列表中并且已经准备好显示的时候,列表会自动滑动到底部以显示最新条目;  
//(3)alwaysScroll   列表会自动滑动到底部,无论新条目是否已经准备好显示.  
android:addStatesFromChildren// 设置这个ViewGroup的drawable状态是否包括子View的状态。若设为true,当子View如EditText或Button获得焦点时,整个ViewGroup也会获得焦点。  

android:alwaysDrawnWithCache// 设置ViewGroup在绘制子View时是否一直使用绘图缓存。默认为true。  

android:animationCache// 设置布局在绘制动画效果时是否为其子View创建绘图缓存。若设为true,将会消耗更多的内存,要求持续时间更久的初始化过程,但表现更好。默认为true。  

android:clipChildren// 设置子View是否受限于在自己的边界内绘制。若设为false,当子View所占用的空间大于边界时可以绘制在边界外。默认为true。  

android:clipToPadding//定义布局间是否有间距。默认为true。  

android:descendantFocusability// 定义当寻找一个焦点View的时候,ViewGroup与其子View之间的关系。可选项为:  
//(1)beforeDescendants       ViewGroup会比其子View更先获得焦点;  
//(2)afterDescendants           只有当无子View想要获取焦点时,ViewGroup才会获取焦点;  
//(3)blockDescendants         ViewGroup会阻止子View获取焦点  

android:layoutAnimation//定义当ViewGroup第一次展开时的动画效果,也可人为地在第一次展开后调用。  

android:persistentDrawingCache// 定义绘图缓存的持久性。有如下可选项:  
//(1)none                    当使用过后不保留绘图缓存  
//(2)animation    在layout animation之后保留绘图缓存  
//(3)scrolling    在Scroll操作后保留绘图缓存  
//(4)all     always保留绘图缓存  
           
  • 重点掌握属性

    • android:divider
    • android:dividerHeight
    • android:listSelector
    • android:scrollbars
    • android:cacheColorHint
    • 具体是什么意思,干嘛的你可以在上面找,不是我不写,我是故意的!
  • listView的方法介绍

    “`

    void addFooterView(View v)//增加一个固定在列表底部的View,参数 v为欲添加的视图

void addFooterView(View v,Object data,boolean isSelectable)//增加一个固定在列表底部的View,参数 v为欲添加的视图,data为与View绑定的数据,isSelectable设置是否可选

void addHeaderView(View v)//增加一个固定在列表顶部的View,参数 v为欲添加的视图

void addHeaderView(View v,Object data,boolean isSelectable)//增加一个固定在列表顶部的View,参数 v为欲添加的视图,data为与View绑定的数据,isSelectable设置是否可选

boolean removeFooterView(View v)//去除一个之前添加的FooterView,参数v为欲删除的视图,若成功删除则返回true

boolean removeHeaderView(View v)//去除一个之前添加的HeaderView,参数v为欲删除的视图,若成功删除则返回true

boolean OnKeyDown(int keyCode,KeyEvent event)//当按下键时响应

boolean OnKeyMultiple(int keyCode,int repeatCount,KeyEvent event)//重复按下键时响应,repeatCount为按下次数

boolean OnKeyUp(int keyCode,KeyEvent event)//当键被释放时响应

ListAdapter getAdapter()//返回ListView正在使用的Adapter

Drawable getDivider()//以Drawable形式返回divider

int getDividerHeight()//这个……真不想解释了

int getFooterViewCount()//返回FooterView的个数,若无返回0

int getHeaderViewCount()//返回HeaderView的个数,若无返回0

boolean getItemsCanFocus()//返回是否有可获得焦点的条目

int getMaxScrollAmount()//列表视图将响应于箭头事件滚动的最大值

Drawable getOverscrollFooter()//返回绘制在所有条目之下的drawable

Drawable getOverscrollHeader()//返回绘制在所有条目之上的drawable

void setAdapter(ListAdapter adapter)//为ListView绑定Adapter

void setCacheColorHint(int color)//参数为0时,将CacheColor设为透明;参数非零时,指定一种颜色作为ListView的背景

void setDivider(Drawable divider)//为ListView中每个条目之间设定一个Divider

void setDividerHeight(int height)//设定Divider的高度,单位为pixel

void setFooterDividerEnabled(boolean footDividerEnabled)//设置FooterView之间的Dividers是否可用

void setHeaderDividerEnabled(boolean headDividerEnabled)//设置HeaderView之间的Dividers是否可用

void setItemsCanFocus(boolean itemsCanFocus)//设置是否包含可获取焦点的Item

void setOverscrollFooter(Drawable footer)//设置一个当滚动时或ListView未填满屏幕时能显示在ListView下方的Drawable

void setOverscrollHeader(Drawable header)//设置一个当滚动时能显示在ListView上方的Drawable

void setRemoteViewAdapter(Intent intent)//为此AbsListView设置一个通过intent连接到RemoteViewsService而提供的远程视图适配器

void setSelection(int position)//设置被选中的条目。如果参数小于0,则position为0的条目将被选中

void setSelectionAfterHeaderView()//选中headerView下方的第一条条目

“`

- #### 常用方法介绍

- void addFooterView(View v)

- void addHeaderView(View v)

- void setEmptyView(View emptyView)

- 以上三个是RecyclerView所没有的,我们之后会讲到

- boolean removeFooterView(View v)

- boolean removeHeaderView(View v)

- void setAdapter(ListAdapter adapter)

- void setCacheColorHint(int color)

- void setDivider(Drawable divider)

- void setDividerHeight(int height)

  • ### 最后一点强调一下

    #### 既然学了编程就要有耐心

    记住上面的话我们就可以一本正经的扯淡了,以上就是listview的相关属性介绍吧,不想篇幅太长,下篇继续list的adapter的讲解,为了讲解,每个我都做了demo,我会依次发到github,想学listView或者RecyclerView或者想从listView转RecyclerView的,可以支持一下

继续阅读