文档章节

ListView的属性详解和探究

Jamsm
 Jamsm
发布于 2016/02/17 10:30
字数 1272
阅读 30
收藏 1

在我们的日常开发中,ListView是一个最常用的组件,所以我们非常有必要对它的属性进行全面的了解。现在就以一个简单的实例,对ListView的属性做一个简单的讲解。           

       首先我们给出简单的布局文件,就一个简单的ListView列表        :                 

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:background="#FFE1FF" 
    android:orientation="vertical" > 
    <ListView 
        android:id="@+id/listView1" 
        android:layout_width="match_parent" 
        android:layout_height="match_parent" /> </LinearLayout>

     

       Activity文件,使用ArrayAdapter对列表进行填充        :                 

public class MainActivity extends Activity { 
    private ListView listView; 
 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
        super.onCreate(savedInstanceState); 
 
        listView = (ListView) findViewById(R.id.listView1); 
        final List<String> adapterData = new ArrayList<String>(); 
        for (int i = 0; i < 20; i++) { 
           adapterData.add("ListItem" + i); 
        } 
        ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, 
        android.R.layout.simple_list_item_1, adapterData); 
        listView.setAdapter(adapter); 
     } 
}

     

       运行效果如下        :                 

                       

       接下来我们在布局的ListView中添加如下属性,并演示其效果        。                 

         

                 1.                      android:            stackFromBottom属性:                                      在ListView和GridView中使用,使它们的内容从底部开始显示        。                 

                布局文件修改如下        :                 

<ListView 
     android:id="@+id/listView1" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:stackFromBottom="true" />

     

运行效果如下,列表在开始的时候,内容就从底部开始显示:           

     

                                             

                 2.android:          transcriptMode属性:                    设置列表的      transcriptMode模式,该模式指定列表      添加新的选项的时候,是否自动滑动到底部,显示新的选项。           

                   disabled:取消transcriptMode模式,默认的                 

                   normal:当接受到数据集合改变的通知,并且仅仅当最后一个选项已经显示在屏幕的时候,自动滑动到底部        。                 

                   alwaysScroll:无论当前列表显示什么选项,列表将会自动滑动到底部显示最新的选项        。                 

       布局修改如下        :                 

<ListView 
    android:id="@+id/listView1" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:stackFromBottom="true" 
    android:transcriptMode="alwaysScroll" />

     

       Activity文件代码如下        :                 

public class MainActivity extends Activity { 
    private ListView listView; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
        super.onCreate(savedInstanceState); 
        setContentView(R.layout.activity_main); 
        listView = (ListView) findViewById(R.id.listView1); 
        final List<String> adapterData = new ArrayList<String>(); 
        for (int i = 0; i < 20; i++) { 
          adapterData.add("ListItem" + i); 
        } 
        final ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, 
        android.R.layout.simple_list_item_1, adapterData); 
        listView.setAdapter(adapter); 
 
        //定时给列表添加新的选项,并通知列表更新 
        final Handler handler = new Handler(); 
        Timer timer = new Timer(); 
        timer.scheduleAtFixedRate(new TimerTask() { 
            @Override 
            public void run() { 
                adapterData.add("New ListItem"); 
                handler.post(new Runnable() { 
                @Override 
                public void run() { 
                    adapter.notifyDataSetChanged(); 
                }
            });  
        } 
    }, 3000, 3000); }

         运行结果如下      :               

     

6秒后的结果(每当添加新的表项的时候,列表自动滑动的底部显示最新的表项)           

     

       其它两个normal和disable属性就不在演示,如上已经解释的比较清楚,大家可以自己试验感受一下        。                 

                                             

                 3.          android:cacheColorHint属性:                            该属性在官方文档和个资料中找不到比较好的描述;根据实际的体验,当你设置的ListView的背景时,应该设置该属性为“#00000000”(透明),        不然在滑动的时候,列表的颜色会变黑或者背景图片小时的情况        !                 

                                             

                 4.                      android:            divider属性:                                      列表之间绘制的颜色或者图片。一般开发中用于分隔表项        。                 

       在实际开发过程中,如果你不想要列表之间的分割线,可以设置属性为@null ,布局文件如下        :                 

<ListView 
    android:id="@+id/listView1" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:divider="@null" />

     

       运行结果如下        :                 

     

                                                                     

                             5.android:            fadingEdge属性:                                      设置列表的阴影                 

       布局文件如下        :                 

<ListView 
    android:id="@+id/listView1" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:background="@drawable/ic_launcher" 
    android:cacheColorHint="#000000ff" 
    android:fadingEdge="vertical"  
    android:fadingEdgeLength="40dp"/>

     

                 运行效果如下          :                           

     

                                             

                 6.          android:fastScrollEnabled属性:                    启用快速滑动条,它能快速的滑动列表。      但在实际的测试中发现,当你的数据比较小的时候,是不会显示快速滚动条。           

       布局文件如下        :                 

<ListView 
    android:id="@+id/listView1" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:fastScrollEnabled="true" />

     

       运行结果如下(当你快速滑动列表的时候,就出现如下快速滑动滚动条        ):                 

     

                                             

                 7.android          :                      listSelector                                属性:                                      用来指明列表当前选中的选项的图片                        

       布局文件如下        :                 

<ListView 
    android:id="@+id/listView1" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:listSelector="@drawable/ic_launcher" />

     

运行结果如下(当用手指点击ListItem3的时候,出现如下效果,图片显示在ListItem3的底部,并未遮挡ListItem3):           

     

                                             

                 8.android:                      drawSelectorOnTop属性:                                      当设置为true时候,listSelector的图片将会被绘制在被选中的选项之上        。                 

       布局文件如下        :                 

<ListView 
    android:id="@+id/listView1" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:drawSelectorOnTop="true" 
    android:listSelector="@drawable/ic_launcher" />

     

运行结果如下(对比上面,发现图片遮挡了ListItem3的显示):           

     

                                                                     

                             9.android:            choiceMode属性:                                      定义了列表的选择行为,默认的情况下,列表没有选择行为        。                 

       none:正常不指定选择的列表                 

       singleChoice:列表允许一个选择                 

       multipleChoice:列表允许选择多个                 

       mutipleChoiceModal        :                 

       布局文件如下        :                 

<ListView 
    android:id="@+id/listView1" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:choiceMode="multipleChoice" />

     

                 Activity文件如下          :                           

public class MainActivity extends Activity { 
    private ListView listView; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
        super.onCreate(savedInstanceState); 
        setContentView(R.layout.activity_main); 
        listView = (ListView) findViewById(R.id.listView1); 
        final List<String> adapterData = new ArrayList<String>(); 
        for (int i = 0; i < 40; i++) { 
            adapterData.add("ListItem" + i); 
        } 
        //只有使用支持选择的布局才能选择多项 
        ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, 
android.R.layout.simple_list_item_checked, adapterData); 
        listView.setAdapter(adapter); 
        listView.setFastScrollEnabled(true); 
    } 
}

     

                 运行结果如下(点击多个选项          ),          关于nono和singleChoice可以自己尝试一下          :                           

     


本文转载自: http://blog.csdn.net/p106786860/article/details/10596339

Jamsm
粉丝 6
博文 75
码字总数 10707
作品 0
南京
私信 提问
ListView详解0

ListView常用方法总结 1、listview拖动变黑解决方法 在Android中,ListView是最常用的一个控件,在做UI设计的时候,很多人希望能够改变一下它的背景,使他能够符合整体的UI设计,改变背景背很...

eclipse_xu
2012/10/28
0
0
Qt Quick里的图形效果——混合(Blend)

Blend 元素用指定的模式混合两个 Item 。在我们使用 QPainter 绘图时,支持 Composition Modes ,Blend 干的事儿与此类似。 使用 Blend 需要: snippetid="579325" snippetfilename="blog20......

foruok
2015/01/14
0
0
android ListView 九大重要属性详细分析

android ListView 九大重要属性详细分析 1.android ListView 一些重要属性详解,兄弟朋友可以参考一下。 首先是stackFromBottom属性,这只该属性之后你做好的列表就会显示你列表的最下面,值...

抉择很难
2015/12/24
80
0
view-ListView学习

LiastView网上有很多,推荐如下: 1、android ListView详解: http://www.cnblogs.com/allin/archive/2010/05/11/1732200.html 2、Android中ListView的性能问题 http://android.tgbus.com/A......

工作日
2011/12/27
1K
0
Qt Quick之ListView下拉刷新数据

Qt Quick里的ListView,本身是Flickable的派生类,当你用鼠标拖曳或者手指触摸(触摸屏)时,会产生flickStarted和flickEnded两个信号,利用这两个信号,就可以实现下拉刷新数据,当然上拉刷...

foruok
2014/09/04
0
0

没有更多内容

加载失败,请刷新页面

加载更多

PhotoShop 色调:理解直方图/RGB通道信息

一、直方图:图表的形式,展示图像像素分布的情况 1.平均值:表示平均亮度 2.标准偏差值:表示亮度值范围内的中间值 3.像素: 表示用于计算直方图的像素总数 4.色阶:显示指针下面的区域亮度...

东方墨天
20分钟前
5
0
wildfly(JBoss AS)应用服务器快速入门

什么是wildfly JBoss AS 从8版本起名为wildfly。Wildfly是一个开源的基于JavaEE的轻量级应用服务器。可以在任何商业应用中免费使用。 WildFly是一个灵活的、轻量的、强大管理能力的应用程序服...

程序新视界
45分钟前
4
0
Java集合类常见面试知识点总结

Java集合类学习总结 这篇总结是基于之前博客内容的一个整理和回顾。 这里先简单地总结一下,更多详细内容请参考我的专栏:深入浅出Java核心技术 https://blog.csdn.net/column/details/21930...

Java技术江湖
48分钟前
6
0
怎么用for循环打出爱心

先上效果图: 这是用*组成的爱心,下面讲讲思路: 首先这个图形可以拆分成三部分:第一部分是上面三行的两个梯形,第二部分是中间三行的长方形,第三部分是最下面的倒三角形。 其实图形拆分好...

INEVITABLE
54分钟前
4
0
用HttpUrlConnection伪造成HttpClient

https://www.jianshu.com/p/27ad06cc39d2

shzwork
59分钟前
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部