notifyDataSetChanged():只会刷新数据,不会刷新控件?比如,控件的显示和隐藏?

selector参考:http://dev.10086.cn/cmdn/wiki/index.php?doc-view-6014.html

一、selector(背景选择器)

先看下listview中的状态:

<?xml version="1.0" encoding="utf-8" ?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<!-- 默认时的背景图片--><item android:drawable="@drawable/pic1" /><!-- 没有焦点时的背景图片 --><item android:state_window_focused="false"android:drawable="@drawable/pic1" /><!-- 非触摸模式下获得焦点并单击时的背景图片 --><item android:state_focused="true"android:state_pressed="true"android:drawable= "@drawable/pic2" /><!-- 触摸模式下单击时的背景图片--><item android:state_focused="false"android:state_pressed="true"android:drawable="@drawable/pic3" /><!--选中时的图片背景--><item android:state_selected="true"android:drawable="@drawable/pic4" /><!--获得焦点时的图片背景--><item android:state_focused="true"android:drawable="@drawable/pic5" />
</selector>

使用方法:

1)在listview中配置android:listSelector="@drawable/XXX",或在listview的item中添加属性android:background="@drawable/XXX"。

2)Drawable drawable=getResources().getDrawable(R.drawable.xxx);

ListView.setSelector(drawable);但是这样有时候会出现列表为黑的情况,需加上:android:cacheColorHint="@android:color/transparent"使其透明。

相关属性:

android:state_selected是选中
android:state_focused是获得焦点
android:state_pressed是点击
android:state_enabled是设置是否响应事件,指所有事件

根据这些状态同样可以设置button的selector效果。也可设置selector改变button的文字状态。

以下是配置button中的文字效果:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android"><item android:state_selected="true" android:color="#FFF" /><item android:state_focused="true" android:color="#FFF" /><item android:state_pressed="true" android:color="#FFF" /><item android:color="#000" />
</selector>

Button还可实现更复杂的效果,如渐变: drawable/button_color.xml

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">                 /<item android:state_pressed="true">//定义当button 处于pressed 状态时的形态。<shape><gradient android:startColor="#8600ff" /><stroke     android:width="2dp" android:color="#000000" /><corners android:radius="5dp" /><padding android:left="10dp" android:top="10dp"android:bottom="10dp" android:right="10dp"/></shape></item><item android:state_focused="true">//定义当button获得 focus时的形态<shape><gradient android:startColor="#eac100"/><stroke     android:width="2dp" android:color="#333333"    color="#ffffff"/><corners android:radius="8dp" /><padding android:left="10dp" android:top="10dp"android:bottom="10dp" android:right="10dp"/></shape></item>
</selector>

最后,在xml中的<Button />添加两项:

android:focusable="true"

android:background="@drawable/button_color"

这样,当你使用Button的时候就可以甩掉系统自带的那黄色的背景了,实现个性化的背景。

二、listview的item同一时刻只能有一个被选中

原理:记下被选中的item是第几个,然后改变它的背景色。

实现:

第一步:适配器中传递一个参数,用来标记被选中的item是第几个。

第二步:在适配器的getView()中判断position是否与此参数相等,来判断是否需要改变背景色

第三步:第一个调用适配器的构造函数时,传递一个负数,表面没有item被选中。然后在listview的onItemClicked()事件中传递被选中的item是第几个,再notifyDataSetChanged()即可。

笔记56--listview之selector、listview中同一时刻只有一个item能被选中相关推荐

  1. Android --- RecycleView 中默认选择第一个 item,点击第 2 个 item 时改变其字体样式,其余的 item 的字体样式恢复默认

    问题描述: RecycleView 中默认选择第一个 item,点击第 2 个 item 时改变其字体样式,其余的 item 的字体样式恢复默认 代码如下: 主要的参数是 mPosition publ ...

  2. android listview settag,Android View中setTag的二三事

    每一个APP,都离不开View的使用,小到一个登陆注册页面,大到复杂的网上商城,都是View使用的具体体现. 往往我们使用View,其实就是为了向用户展示一定的数据,因此,view的使用又总是离不开数 ...

  3. Android群英传笔记——第四章:ListView使用技巧

    Android群英传笔记--第四章:ListView使用技巧 近期也是比較迷茫.可是有一点点还是要坚持的,就是学习了.近期离职了,今天也是继续温习第四章ListView,也拖了事实上也挺久的了,lis ...

  4. Android旋转切换条目,Android:当我添加动态新的ListView条目时,ListView中的旋转器会丢失它们的值...

    我的活动包含一个按钮和一个ListView. ListView包含Spinner和EditText视图.每次我想在Activity的ListView中插入一个新的行条目时,我都会使用该按钮. 我遵循了 ...

  5. ListView使用技巧-更新中

    虽然在Android5.X中,RecyclerView在很多地方组件取代了ListView,但是ListView的使用依然是分广泛. 本博文将对以下两方面的内容进行介绍 1. ListView常用技巧 ...

  6. Android笔记: 解决ScrollView嵌套ListView的冲突方法

    范例: 1.MainActivity代码: public class MainActivity extends Activity {// 只要在设置ListView的Adapter后调用此静态方法Ut ...

  7. listview当选中某一个item时设置背景色其他的不变

    2019独角兽企业重金招聘Python工程师标准>>> listview当选中某一个item时设置背景色其他的不变: 可以使用listview.setOnFoucsChangeLis ...

  8. [转载]ExtJs4 笔记(11) Ext.ListView、Ext.view.View 数据视图

    本篇介绍两个用来展示数据的容器控件,分别是Ext.ListView和Ext.view.View.Ext.ListView就是大名鼎鼎的 Ext GridPanel的前身,不过现在的Ext4已经将它整合 ...

  9. Delphi读取并用ListView打印输出Excel表中数据

    Delphi7读取并用ListView打印输出Excel表中数据 我自己也是才开始学的,想做这么个功能在网上看了蛮多案例,感觉缺了很多细节,很多案例不能说是差不多吧,完全就是一模一样,属于是你抄我我抄 ...

最新文章

  1. 1008 Elevator
  2. python软件下载手机版-Learn Python中文版app
  3. c++中的void指针和const指针
  4. python 画图_用python解九宫格以及画图
  5. Leecode 301. 删除无效的括号——Leecode每日一题系列
  6. vim(三)golang代码跳转配
  7. Unsigned 陷阱
  8. 【clickhouse】clickhouse 主从配置 从节点无数据
  9. 如何获取maven命令执行后成功与否的返回值
  10. php 在线api文档生成,一键生成API文档
  11. Java主流开发框架
  12. 极光推送测试/新手适用/极光推送点击事件设置
  13. Obsolete属性
  14. php 计算工龄,excel如何计算工龄
  15. 批处理Bat建立微信多开程序
  16. instrument Time Profiler总结
  17. 【Java笔记】——将晦涩难懂的IO流形象化
  18. 如何搭建并成功运营手游联运平台?
  19. Python之三元运算、集合、函数
  20. uni-app转小程序ios video不生效+视频播放不了、黑屏问题

热门文章

  1. 打开powershell方法
  2. android开源怎么中兴,Android智能平板电脑 中兴V9使用评测
  3. adb shell input text 中文输入方法
  4. 【MySQL】MySQL中如何实现分页操作
  5. 墨三国 服务器信息拉取失败,墨三国前期注意事项-新手开局了解需知-66街机网...
  6. ATTCK实战系列——红队实战(—)
  7. HBuilder开发PHP配置
  8. RequestContextHolder跨线程获取不到request对象,解决方法
  9. VR漫游赋能学校教育,打造VR全景智慧校园
  10. 一个北漂程序员,告诉你什么是有效跳槽