adapter-问一个关于listview的问题

问题描述

问一个关于listview的问题

我自定义了一个Listview,显示正常。
行布局中包含一个使用选择器的图片holder.flag,用的是selected属性;
我在adapter的getView中为这个图片添加了点击事件,如下:

 holder.flag.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                holder.flag.setSelected(!holder.flag.isSelected());//点击后设为相反状态
            }
        });

每次点击在LogCat中观察holder.flag.isSelected()值都会变化,但图片本身却没有改变。

我记得Adapter中应该是可以更新界面的呀。
我是了一下把adapter写成抽象类,继承onClick监听器接口,然后在ui界面中实现,确实能实现图片随点击变化。但我的需求是不但让图片能随点击变化,还要把这个变化后的值发送至数据库,去改变被点击的那项数据的属性,这样一来简单的重写监听器就没法实现了。求教一下。

解决方案

可以的啊,你不是继承onClick方法么?onClick不是有一个参数的么,是View,你把这项数据保存到view的tag里面,不就传过去了么??
还是我没看懂你的意思???

解决方案二:

看看安卓的触摸事件分发机制,估计事件被Adapter消费掉了,不再传递。

解决方案三:

点击事件触发是正常的,我原来在点击事件中加了log,能看出每次点击值都发生了变化,只是变化没有被反映到界面上;比方说一个图片,我点一下变成黑色,再点变白色,现在它的值有变化,但颜色却没变。

我自己也用了其他办法解决了这个问题,就是把这个变化后的值写回数据源,然后通知adapter更新数据。只是不知道这样做好不好,大家还有没有更好的办法。

 holder.flag.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                holder.flag.setSelected(!holder.flag.isSelected());//点击后设为相反状态
                data.get(position).setOptional(holder.flag.isSelected());
                //handler.sendEmptyMessage(2);
                notifyDataSetChanged();
            }
        });
时间: 2024-11-30 08:21:26

adapter-问一个关于listview的问题的相关文章

处理The content of the adapter has changed but ListView did not receive a notification异常

istView在更新时报异常: ERROR/AndroidRuntime(15260): java.lang.IllegalStateException: The content of the adapter has changed but ListView did not receive a notification. Make sure the content of your adapter is not modified from a background thread, but only

java-新手问一个很奇怪的问题

问题描述 新手问一个很奇怪的问题 class Demo { int num = 1; int add = 2; Demo() { num = 5; add = 6; } void show() { System.out.println("Fu num="+num+" Fu add="+add); } } class DemoA extends Demo { DemoA() { this.num = 3; this.add = 4; } void show() { S

逻辑训练-问一个逻辑问题,关于离散数学的

问题描述 问一个逻辑问题,关于离散数学的 本人信息安全专业最近学到离散数学讲到一个蕴含关系想问问大家一个思维问题就图里画线部分.p 蕴含q 在日常生活中可以变成类似于只有 q才 p 这个要怎么理解它?利用集合来理解可以吗 解决方案 离散数学不太清楚了,就理解的话,应该可以使用集合来理解,p蕴含q,说明q是p的组成要素,如人是由各种器官组成的,比如心脏,只有心脏存在,才能存在人.也就是说q是p的必要不充分条件. 解决方案二: 离散数学不太清楚了,就理解的话,应该可以使用集合来理解,p蕴含q,说明q

代码-问一个win32application中,我创建了对话框,

问题描述 问一个win32application中,我创建了对话框, 在对话框中我拖进去编辑框控件,问题是如何使用编辑框,得到输进去的数字求求各位高手了,最好有具体代码,感激不尽!!! 解决方案 用GetDlgItem获取编辑框窗口句柄,用GetWindowText获取编辑框内容,用atoi等函数将字符串转换成整数或者用 GetDlgItemInt 解决方案二: 直接用GetDlgItemInt就可以了.不需要什么"G?e?t?DlgItem获取到控件,然后GetWindowText获取控件文本

pyqt-求问一个PyQt的问题,退出时候内存错误

问题描述 求问一个PyQt的问题,退出时候内存错误 1C 写了一个pyqt的程序,有多个tab页,其中一个tab页是通过matplotlib画图,当这个模块存在时,整个程序在退出的时候就会出现exit code -1073741819,这个是出现了内存错误.但是当我去掉这个模块时,程序不会出现这个问题.而且当我把其他的tab页注释掉,仅仅只有这模块的时候,也不会出问题.这说明,这应该是这个模块与其他的某个模块导致了问题. 于是我一个模块一个模块的注释,想找到到底哪个模块与这个画图的模块同时会导致

安卓-没有代码,我单纯的想问一个关于二维码的问题

问题描述 没有代码,我单纯的想问一个关于二维码的问题 就是说,我在视频上学会了在安卓手机上如何扫描二维码,但是我尝试着扫描一些广告的二维码,他返回的数据就是一个网址,但是我现在要实现的功能是: 每个学生都有自己的二维码,上面有他们的信息,我要制作一个扫二维码的功能来实现对他们二维码的扫描,然后将该学生的信息显示到手机上面,请问这个应该怎么实现呀,我应该再在程序里面加什么呢 解决方案 看你二维码里面是什么,如果是学员ID,你可以扫完之后去学校的学生系统里面去根据id去得到这个用户的信息,不知道对不

变量-问一个我自己都觉得低端的问题,有关js页面的,忘记怎么个原理了

问题描述 问一个我自己都觉得低端的问题,有关js页面的,忘记怎么个原理了 就是我在配置文件properties中定义了多个不同 key-value,然后页面上就用到了这个变量的key取到了value的值,搞不明白是怎么回事了,各位,帮解答一下吧 解决方案 你是用了插件吧. js通过ajax读取properties文件文本内容,回调函数中接收文件内容(即整个文件内容是一个大字符串),再对这个字符串做转换处理,最终转换为js对象 转换逻辑:根据换行符来拆分成数组(一行一个键值对),再对每一行数据根据

问一个el表达式的问题,是html页面中的,语言是java

问题描述 问一个el表达式的问题,是html页面中的,语言是java 我这样写判断是否为空,但是为什么就出错了 #if({empty user})当后台返回来的user为空时就出错了,页面打不开 解决方案 页面应该是 JSP页面吧 ~ <c:if test=""${empty user}""> user is empty or null. </c:if> <c:if test=""${not empty user}&

objective-c-ios 问一个关于crash日志 错误类型的问题

问题描述 ios 问一个关于crash日志 错误类型的问题 比如想问两个问题1.Exception Type: EXC_BAD_ACCESS 一般都是访问了一块已经被回收(不可用的内存)造成的 那Exception Type: EXC_CRASH (SIGABRT)Exception Codes: 0x0000000000000000 0x0000000000000000Exception Note: EXC_CORPSE_NOTIFY 这种EXC_CORPSE_NOTIFY.EXC_CRASH