在ListView中设置Selector为null会报空指针?
mListView.setSelector(null);//空指针
试试下面这种:
mListView.setSelector(new ColorDrawable(Color.TRANSPARENT));

如何让ListView初始化的时候就选中一项?
ListView需要在初始化好数据后,其中一项需要呈选中状态。所谓"选中状态"就是该项底色与其它项不 同,setSelection(position)只能定位到某个item,但是无法改变底色呈高亮。setSelection(position)只能 让某个item显示在可见Item的最上面(如果Item超过一屏的话)! 就是所谓的firstVisibleItem啦!
如果想要实现效果可以在listview所绑定的adapter里的getView函数里去完成一些具体的工作。可以记下你要高亮的那个item的index,在getView函数里判断index(也就是position),如果满足条件则加载不同的背景。

ListView的右边滚动滑块启用方法?
    很多开发者不知道ListView列表控件的快速滚动滑块是如何启用的,其实辅助滚动滑块只需要一行代码就可以搞定,如果你使用XML布局只需要在 ListView节点中加入  android:fastScrollEnabled="true" 这个属性即可,而对于Java代码可以通过myListView.setFastScrollEnabled(true); 来控制启用,参数false为隐藏。
    还有一点就是当你的滚动内容较小,不到当前ListView的3个屏幕高度时则不会出现这个快速滚动滑块,该方法是AbsListView的基础方法,可以在ListView或GridView等子类中使用快速滚动辅助。

1. 更新ListView中的數據,通過調用BaseAdapter對象的notifyDataSetChanged()方法:
      mAdapter.notifyDataSetChanged();

2. 每個listview都有無效的位置,如第一行的前一行,最後一行的後一行,這個無效的位置是一個常量.
     ListView.INVALID_POSITION

3. 有時我們需要在程序中通過點擊按鈕來控制ListView行的選中,這就用到了在程序中如何使用代碼來選擇ListView項.
         mListView.requestFocusFromTouch();
         mListView.setSelection(int index);

第一條語句並不是必須的,但是若你ListView項中含有Button,RadioButton,CheckBox等比ListView取得 焦點優先級高的控件時,那麼第一條語句是你必須加的.

4.  同樣的,若你ListView項中含有Button,RadioButton,CheckBox等比ListView取得 焦點優先級高的控件時,ListView的setOnItemClickListener是不被執行的,這時你需要在你的xml文件中對這些控件添加 android:focusable="false" 注意這條語句要放在xml文件中修改,在代碼中使用是無效的.

5. 如何保持ListView的滾動條一直顯示,不隱藏呢:  xml文件中做如下修改    android:fadeScrollbars="false"

6. ListView本身有自己的按鍵事件,即你不需要設置方向鍵的標識,按下方向鍵ListView就會有默認的動作,那如何進行控制,編寫自己的 onKey呢,你需要在Activity中重寫dispatchKeyEvent(KeyEvent event);方法,在這裡面定義你自己的動作就可以了

ListView 自定义滚动条样式:
<ListView android:id="@android:id/list"
        android:layout_width="match_parent"
        android:layout_height="0dip"
        android:layout_weight="1"
        android:stackFromBottom="true"//从下开始显示条目
        android:transcriptMode="normal"
        android:fastScrollEnabled="true"
        android:focusable="true"
        android:scrollbarTrackVertical="@drawable/scrollbar_vertical_track"
        android:scrollbarThumbVertical="@drawable/scrollbar_vertical_thumb"
/>
//scrollbar_vertical_track,crollbar_vertical_thumb自定义的xml文件,放在Drawable中,track是指长条,thumb是指短条
去掉ListView Selector选种时黄色底纹一闪的效果:

Xml代码  
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <shape xmlns:android="http://schemas.android.com/apk/res/android">
  3. <solid android:color="@android:color/transparent"/>
  4. <corners android:radius="0dip" />
  5. </shape>
  6. //listview.setSelector(R.drawable.thisShape);

或者还有一种办法:
在Adapter中重写public boolean isEnabled(int position)方法,将其返回false就可以了,推荐采用此种办法,具体见http://gundumw100.iteye.com/admin/blogs/850654

Java代码  
  1. public boolean isEnabled(int position) {
  2. // TODO Auto-generated method stub
  3. return false;
  4. }

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就可以实现滚动条的自动隐藏和显示。

如何在使用gallery在flinging拖动时候不出现选择的情况?
这时候需要注意使用
gallery.setCallbackDuringFling(false)

如何让ListView自动滚动?
注意stackFromBottom以及transcriptMode这两个属性。类似Market客户端的低端不断滚动。
<ListView android:id="listCWJ" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:stackFromBottom="true"   
     android:transcriptMode="alwaysScroll" 
/>
如何遍历listView 的的单选框?

Java代码  
  1. ListView listView = (ListView)findViewById(R.id.配置文件中ListView的ID);
  2. //全选遍历ListView的选项,每个选项就相当于布局配置文件中的RelativeLayout
  3. for(int i = 0; i < listView.getChildCount(); i++){
  4. View view = listView.getChildAt(i);
  5. CheckBox cb = (CheckBox)view.findViewById(R.id.CheckBoxID);
  6. cb.setChecked(true);
  7. }

如何让ListView中TextView的字体颜色跟随焦点的变化?
我们通常需要ListView中某一项选中时,他的字体颜色和原来的不一样。 如何设置字体的颜色呢? 在布局文件中TextColor一项来设置颜色,但是不是只设置一种颜色,而是在不同的条件下设置不同的颜色: 下面是个例子:

Xml代码  
  1. <?xml version="1.0" encoding="utf-8" ?>
  2. <selector xmlns:android="http://schemas.android.com/apk/res/android">
  3. <item android:state_enabled="false" android:color="@color/orange"></item>
  4. <item android:state_window_focused="false" android:color="@color/orange"></item>
  5. <item android:state_pressed="true" android:color="@color/white"></item>
  6. <item android:state_selected="true" android:color="@color/white"></item>
  7. <item android:color="@color/orange"></item>
  8. </selector>
  9. 在获取焦点或者选中的情况下设置为白色,其他情况设置为橘黄色。

如何自定义ListView行间的分割线?
所有基于ListView或者说AbsListView实现的widget控件均可以通过下面的方法设置行间距的分割线,分割线可以自定义颜色、或图片。
在ListView中我们使用属性android:divider="#FF0000" 定义分隔符为红色,当然这里值可以指向一个drawable图片对象,如果使用了图片可能高度大于系统默认的像素,可以自己设置高度比如6个像素 android:dividerHeight="6px" ,当然在Java中ListView也有相关方法可以设置。

ListView不通过notifyDataSetChanged()更新指定的Item
Listview一般大都是通过notifyDataSetChanged()來更新listview,但通过notifyDataSetChanged()会把界面上现实的的item都重绘一次,这样会影响ui性能。
可以通过更新指定的Item提高效率,伪代码如下:

Java代码  
  1. private void updateView(int itemIndex){
  2. int visiblePosition = yourListView.getFirstVisiblePosition();
  3. View v = yourListView.getChildAt(itemIndex - visiblePosition);//Do something fancy with your listitem view
  4. TextView tv = (TextView)v.findViewById(R.id.sometextview);
  5. tv.setText("Hi! I updated you manually");
  6. }

让ListView中长按某些Item时能弹出contextMenu,有些不能
定义了一个listView,并为他设置了setOnCreateContextMenuListener的监听,但这样做只能使这个listView中的所有项在长按的时候弹出contextMenu 。
有时希望的是有些长按时能弹出contextMenu,有些不能。解决这个问题的办法是为这个listView设置setOnItemLongClickListener监听,然后实现

Java代码  
  1. public boolean onItemLongClick(AdapterView<?> parent, View view,
  2. int position, long id) {
  3. if(id == 1){
  4. return true;
  5. }
  6. return false;
  7. }

如果这一项的id=1,就不能长按。 这样就可以了

ListView底部分隔线的问题
      在工作中遇到了一个难题,就是一个listView在最下面的一个item下面没有分割线,要求是必须得有这条分割线。经过一通研究发现了这个奇怪的现象:
      1. ListActivity有这条底部分割线。
      2.在Activity中只有listview,没有别的控件的话也会有。
      其实ListActivity也是一个Activity,只不过在其中使用了SetContentView(listView)方法设置了一个 listView作为其显示的View而已。所以结论就是只要这个activity调用了SetContentView(listView)就会有这条底 部分割线。
      那么什么情况下才不会有这条分割线呢?在Activity中如果调用setContentView(View)而ListView只是内嵌入到这个View的话有可能会没有这条分割线。
      分析其原因:通过加断点调试发现在listView中,所有的分割线都是通过画一个很窄的矩形来实现的,但是在画分割线前都会都会判断目前的位置A和 listView的长度B,如果A=B了,那么就不会画这条分割线了。但是将Listview嵌入到一个View中,一般会设置为高度为 wrap_content,这种情况下,最后那条分割线的位置刚好等于listView的高度,所以系统不会画上这条分割线。那要怎么样才会画上呢?很简 单,将ListView的高度设置为fill_partent就可以了。
     当然以上所说的都是item很少的情况下,如果item很多以至于必须显示滚动条的话,那最后一个item下面是肯定不会有分割线了。

ListView 使用详解的更多相关文章

  1. JSON详解+ C# String.Format格式说明+ C# ListView用法详解 很完整

    JSON详解 C# String.Format格式说明 C# ListView用法详解 很完整

  2. flutter系列之:flutter中常用的ListView layout详解

    目录 简介 ListView详解 ListView中的特有属性 ListView的构造函数 ListView的使用 总结 简介 ListView是包含多个child组件的widget,在ListVie ...

  3. react-native ListView使用详解

    刚好今天七夕,呆萌的程序猿没有妹纸,刚好发小明天结婚,我还在异地,晚上还要苦逼的赶火车.趁着下午比较闲,更新一下Blog,也算是在百无聊赖之时给众多单身程序猿们的小福利吧,虽然已经好久没更了...囧 ...

  4. C# ListView用法详解

    一.ListView类 1.常用的基本属性: (1)FullRowSelect:设置是否行选择模式.(默认为false) 提示:只有在Details视图该属性才有意义. (2) GridLines:设 ...

  5. {Reship}{ListView}C# ListView用法详解

    ======================================================================== This aritcle came from http ...

  6. [转载]C# ListView用法详解

    一.ListView类 1.常用的基本属性: (1)FullRowSelect:设置是否行选择模式.(默认为false) 提示:只有在Details视图该属性才有意义. (2) GridLines:设 ...

  7. ListView OnScrollListener详解(滑屏分页显示数据)

    package com.action; import java.util.ArrayList; import java.util.List; import android.app.Activity; ...

  8. C# WINFORM ListView用法详解(转)

    源代码下载位置: http://pan.baidu.com/s/1qXrLehe 一.ListView类 1.常用的基本属性: (1)FullRowSelect:设置是否行选择模式.(默认为false ...

  9. C# ListView用法详解 很完整

    一.ListView类 1.常用的基本属性: (1)FullRowSelect:设置是否行选择模式.(默认为false) 提示:只有在Details视图该属性才有意义. (2) GridLines:设 ...

随机推荐

  1. 使用ResourceBundle访问资源文件(properties)帮助类

    import java.util.ResourceBundle; /** * 读取properties文件的帮助类 * @author */ public class PropertiesUtil { ...

  2. Cookie机制(会话cookie和持久化cookie)在客户端保持HTTP状态信息的方案

    1. Cookie只有一个name和一个value,不同于map;购物车设计的时候需要cookie,获取购物车的cookie id,以便于将物品多次放入购物车: 2.cookie获取了其地址,并且可以 ...

  3. onActivityResult传值的使用

    参考地址: http://wang-peng1.iteye.com/blog/632833 http://www.cnblogs.com/linjiqin/archive/2011/06/03/207 ...

  4. Gift Hunting(分组背包)

    Gift Hunting Time Limit: 6000/3000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total ...

  5. 测试-关于Unity获取子层级内容的几种接口(Transform FindChild, Component GetComponentInChildren,...)

    测试常用的层级内组件查找接口,但一些需求还是需要扩展 比如按照名称批量查找节点,查找接口对象等 1.Transform - Transform Find(string name) 可以直接根据名称搜索 ...

  6. 我的android学习经历13

    ToggleButton控件的使用 ToggleButton控件看名字就可以知道它是一个 “开关” 控件,也就是有两种不同状态的按钮. 主要的特别属性有三个: android:textOn=" ...

  7. Create XO Checker Game With Oracle Forms

    Created XO Checker game in Oracle Forms and sharing its FMB (source code) for reference so that you ...

  8. Change Or Set Report Object Property At Run Time In Oracle Forms Using Set_Report_Object_Property Command

    Sets the Report object property at run time in Oracle Forms of an report object. The following are t ...

  9. MyBatis Mapper 接口如何通过JDK动态代理来包装SqlSession 源码分析

    我们以往使用ibatis或者mybatis 都是以这种方式调用XML当中定义的CRUD标签来执行SQL 比如这样 <?xml version="1.0" encoding=& ...

  10. VS连接Windows Mobile模拟器

    原文:http://www.cnblogs.com/xjimmyshcn/archive/2011/07/19/2111087.html 一.WinCE 模拟器通过ActiveSync 6.1(即Wi ...