ListView的属性详解和探究

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

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

1<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  2    xmlns:tools="http://schemas.android.com/tools"  3    android:layout_width="match_parent"  4    android:layout_height="match_parent"  5    android:background="#FFE1FF"  6    android:orientation="vertical" >  7    <ListView  8        android:id="@+id/listView1"  9        android:layout_width="match_parent"  10        android:layout_height="match_parent" /> </LinearLayout>

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

1public class MainActivity extends Activity {  2    private ListView listView;  3  4    @Override  5    protected void onCreate(Bundle savedInstanceState) {  6        super.onCreate(savedInstanceState);  7  8        listView = (ListView) findViewById(R.id.listView1);  9        final List<String> adapterData = new ArrayList<String>();  10        for (int i = 0; i < 20; i++) {  11           adapterData.add("ListItem" + i);  12        }  13        ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,  14        android.R.layout.simple_list_item_1, adapterData);  15        listView.setAdapter(adapter);  16     }  17}

       运行效果如下        :                 

                       

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

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

                布局文件修改如下        :                 

1<ListView  2     android:id="@+id/listView1"  3     android:layout_width="match_parent"  4     android:layout_height="match_parent"  5     android:stackFromBottom="true" />

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

     

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

                   disabled:取消transcriptMode模式,默认的                 

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

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

       布局修改如下        :                 

1<ListView  2    android:id="@+id/listView1"  3    android:layout_width="match_parent"  4    android:layout_height="match_parent"  5    android:stackFromBottom="true"  6    android:transcriptMode="alwaysScroll" />

       Activity文件代码如下        :                 

1public class MainActivity extends Activity {  2    private ListView listView;  3    @Override  4    protected void onCreate(Bundle savedInstanceState) {  5        super.onCreate(savedInstanceState);  6        setContentView(R.layout.activity_main);  7        listView = (ListView) findViewById(R.id.listView1);  8        final List<String> adapterData = new ArrayList<String>();  9        for (int i = 0; i < 20; i++) {  10          adapterData.add("ListItem" + i);  11        }  12        final ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,  13        android.R.layout.simple_list_item_1, adapterData);  14        listView.setAdapter(adapter);  15  16        //定时给列表添加新的选项,并通知列表更新  17        final Handler handler = new Handler();  18        Timer timer = new Timer();  19        timer.scheduleAtFixedRate(new TimerTask() {  20            @Override  21            public void run() {  22                adapterData.add("New ListItem");  23                handler.post(new Runnable() {  24                @Override  25                public void run() {  26                    adapter.notifyDataSetChanged();  27                } 28            });   29        }  30    }, 3000, 3000); }

         运行结果如下      :               

     

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

     

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

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

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

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

1<ListView  2    android:id="@+id/listView1"  3    android:layout_width="match_parent"  4    android:layout_height="match_parent"  5    android:divider="@null" />

       运行结果如下        :                 

     

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

       布局文件如下        :                 

1<ListView  2    android:id="@+id/listView1"  3    android:layout_width="match_parent"  4    android:layout_height="match_parent"  5    android:background="@drawable/ic_launcher"  6    android:cacheColorHint="#000000ff"  7    android:fadingEdge="vertical"   8    android:fadingEdgeLength="40dp"/>

                 运行效果如下          :                           

     

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

       布局文件如下        :                 

1<ListView  2    android:id="@+id/listView1"  3    android:layout_width="match_parent"  4    android:layout_height="match_parent"  5    android:fastScrollEnabled="true" />

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

     

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

       布局文件如下        :                 

1<ListView  2    android:id="@+id/listView1"  3    android:layout_width="match_parent"  4    android:layout_height="match_parent"  5    android:listSelector="@drawable/ic_launcher" />

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

     

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

       布局文件如下        :                 

1<ListView  2    android:id="@+id/listView1"  3    android:layout_width="match_parent"  4    android:layout_height="match_parent"  5    android:drawSelectorOnTop="true"  6    android:listSelector="@drawable/ic_launcher" />

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

     

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

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

       singleChoice:列表允许一个选择                 

       multipleChoice:列表允许选择多个                 

       mutipleChoiceModal        :                 

       布局文件如下        :                 

1<ListView  2    android:id="@+id/listView1"  3    android:layout_width="match_parent"  4    android:layout_height="match_parent"  5    android:choiceMode="multipleChoice" />

                 Activity文件如下          :                           

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

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

点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

MySQL部分从库上面因为大量的临时表tmp_table造成慢查询

背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_

皕杰报表之UUID

​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

2020年前端实用代码段,为你的工作保驾护航

有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )