84669 人学习
152542 人学习
20005 人学习
5487 人学习
7821 人学习
359900 人学习
3350 人学习
180660 人学习
48569 人学习
18603 人学习
40936 人学习
1549 人学习
1183 人学习
32909 人学习
欢迎选择我的课程,让我们一起见证您的进步~~
说一下自己的解决方案:其实整体item,ImageView和TextView均是通过设置selector实现的。分别是android:background,android:src,android:textColor.需要注意两点:
android:textColor里设置selector,里面需要实现的是android:color,而不是android:drawable.
ListView默认是整体item获取焦点,如果子控件没有跟随,需要使用android:duplicateParentState="true"让其获取焦点。
ImageView与TextView都加上这个属性:
android:duplicateParentState="true"
如果是我就在getView这里写逻辑(维护一个列表什么的),收到选中事件的时候修改列表然后调用notifyDataSetChanged,因为listView本身有缓存item的设计,修改单个itemView会引起很多问题。
提供一个新的思路供你参考,利用事件分发的方法dispatchTouchEvent()或者onTouchEvent()来处理,在你描述的问题中,当用户点击Item时,其对应的父布局、ImageView、TextView均可拿到分发的事件,但在事件方法中不要做拦截,这样不同控件的背景和色值想怎么变随心所欲了。
iamgeView和textView总有父布局吧?那么你就设置这个父布局的点击监听,监听到了,不就可以修改图片或者文字了?
说一下自己的解决方案:其实整体item,ImageView和TextView均是通过设置selector实现的。分别是android:background,android:src,android:textColor.
需要注意两点:
android:textColor里设置selector,里面需要实现的是android:color,而不是android:drawable.
ListView默认是整体item获取焦点,如果子控件没有跟随,需要使用android:duplicateParentState="true"让其获取焦点。
ImageView与TextView都加上这个属性:
如果是我就在getView这里写逻辑(维护一个列表什么的),收到选中事件的时候修改列表然后调用notifyDataSetChanged,因为listView本身有缓存item的设计,修改单个itemView会引起很多问题。
提供一个新的思路供你参考,利用事件分发的方法dispatchTouchEvent()或者onTouchEvent()来处理,在你描述的问题中,当用户点击Item时,其对应的父布局、ImageView、TextView均可拿到分发的事件,但在事件方法中不要做拦截,这样不同控件的背景和色值想怎么变随心所欲了。
iamgeView和textView总有父布局吧?那么你就设置这个父布局的点击监听,监听到了,不就可以修改图片或者文字了?