android:listView学习记录2

本文介绍ListView的定制方法,包括设置点击响应方式、启用文本过滤功能、定义点击时的背景变化等,并探讨ListView缓存机制及如何避免默认选中效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、listView的两个属性

ListView.setChoiceModel:设置ListView回应用户响应点击的方式;

ListVeiw.setTextFilterEnable(true):激活过滤功能,用户可以在软键盘上输入文字,ListView可以自动匹配用户输入的文字。


2、效果实现

第一、listView

第二、一个listView列表里面水平布置了一个imageView和一个textView

第三、实现点击进行改变背景色,用到<selector></selector>标签


main.xml:用来定义ListView的布局

list_item.xml:用来定义ListView里面元素的布局

selector.xml:用来定义当用户点击时的改变


3.自定义listView的时候,当不使用android:cacheColorHint="@000000"会出现下面选中一个空间黑色色底的情况,破坏整体美观:

         

4.当不使用android:listSelector属性,默认会显示选中的item为橙黄底色,有时候我们需要去掉这种效果:


5、listView的缓存(来自:http://www.itkee.com/developer/detail-1ec.html)

listView针对每个item,都会调用adapter的getView()方法,要求adapter返回一个View供item显示。其实现原理如何呢?

在AbListView类里面,有个obtainView函数,每次ListView想获得一个子View比如滚动时,就找它,这个函数关键代码如下:

//从回收站中获得View

scrapView = mRecycler.getScrapView(position);

//通过getView获得View,注意,这里scrapView被作为参数传入。
        child = mAdapter.getView(position, scrapView, this);
         if (child != scrapView) {

//如果不使用回收站中的View,则从新放回去
                mRecycler.addScrapView(scrapView);
            } else {

//使用回收站中的View
                isScrap[0] = true;
                child.dispatchFinishTemporaryDetach();
            }

           看看getView的默认实现,在CursorAdapter中:

View v;

//convertView这个就是上面的scrapView
        if (convertView == null) {
            v = newView(mContext, mCursor, parent);
        } else {
            v = convertView;
        }

//这里将数据赋值到界面上
        bindView(v, mContext, mCursor);
        return v;

可以看书,默认的getView,首先从回收站中获取,除非回收站得不到了才new一个出来。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值