listview-在Activity中调用Adapter.getView更改不了某控件的状态

问题描述

在Activity中调用Adapter.getView更改不了某控件的状态

在activity中调用adapter.gerView方法(此adapter是继承baseAdapter的而来的),得到了某个控件在listView列表项中的View,然后通过这个View.FindViewByID找到这个控件,最后更新控件的状态,但是为什么不起作用?
PS : 下面那个state的值是在广播中收到的消息,由于太多就不一一贴出来了。
MyAdapter adapter = new MyAdapter(context);

View view2 = adapter.getView(ListViewPostion, convertView, null);

ImageButton btn = (ImageButton) view2.findViewById(R.id.btn__switch);

if(state) {

btn.setImageResource(R.drawable.switch_on);

}else {

btn.setImageResource(R.drawable.switch_off);

}

解决方案

题主对ListView的机制理解有些不太对。
Android将ListView与Adapter进行了接耦,当一个Item需要在ListView上进行展示的时候,ListView会调用与它绑定的adapter.getView()来获取
这一个Item所需要的View,然后将这个View绑定到ListView的这一个Item上进行展示。
所以Adapter的getView()是一个回调方法,有@Override标识,实际上ListView调用getView()获得View之后,内部还有一些操作来让这个View显示出来。
题主的代码完成了“获取这一个Item”所需要的View,并且对View进行了内容设置,但是没有完成"让ListView展示这个View"这部分的操作。
这部分的操作,对于调用者来说,在adapter.notifyDataSetChanged()方法里进行。
所以题主应该在MyAdapter中通过一个变量来保存R.drawable.switch_on或者R.drawable.switch_off的值,例如
private int imageButtonContent = R.drawable.switch_on;
然后MyAdapter.getView()中通过imageButtonContent这个值来设置ImageButton的内容。
当Activity接收到广播的时候,就将MyAdapter的imageButtonContent值根据你的需要切换,然后再调用adapter.notifyDataSetChanged()来刷新ListView的内容。

希望能够帮到你,如果还不明白的话可以加我QQ271200723

解决方案二:

参考下是不是这个:

http://blog.csdn.net/sunnyfans/article/details/11737617

解决方案三:

 View view2 = adapter.getView(ListViewPostion, convertView, null);
 这里获取到的view2关键看你getview中怎么处理的,
 同时你手工调用getview,获取到的view也不是你listview显示的item,只能说布局一样,但不是一个

解决方案四:

自定义adapter后,调用getview方法得到的view对象不就是底层传的convertview吗?得不到你要的view的,没办法!

时间: 2024-11-01 20:07:31

listview-在Activity中调用Adapter.getView更改不了某控件的状态的相关文章

button-从另外的 activity 中调用按钮

问题描述 从另外的 activity 中调用按钮 如何从另外一个 activity 中编辑一个按钮?它返回的是: java.lang.IllegalStateException: Could not execute method of the activityCaused by: java.lang.NullPointerException 但是我想在 Button getButton = (Button)findViewById(R.id.buttonGet);获取 getButton.set

android-Android中在activity中调用service中的某个对象的方法

问题描述 Android中在activity中调用service中的某个对象的方法 Android中在activity中如何调用service中的某个对象的方法!大神求助或者说如何在activity中获取到service中的某个对象! 解决方案 你这个问题问的有些问题啊,activity中获取到service中的某个对象!估计就是调用Service的方法吧,为Service写构造方法,New出Service对象后调用,或者直接写成静态方法直接用类名调用,再或者写接口,怎么调用都可以啊,和工具类调

textview-一个Activity创建数据库,另一个Activity中调用数据库并用TextView显示

问题描述 一个Activity创建数据库,另一个Activity中调用数据库并用TextView显示 第一个Activity(创建数据库): Db db = new Db(this); SQLiteDatabase dbWrite = db.getReadableDatabase(); ContentValues cv = new ContentValues(); cv.put("name", "小张"); cv.put("sex", "

C#中如何让工具栏ToolStrip能触发焦点控件

C#中如何让工具栏ToolStrip能触发焦点控件的Leave.Validating.DataError等事件以验证数据 如题,Winform码农大概都知道这样一个问题,就是当输入焦点仍处在TextBox.DataGridViewCell等控件中时,如果单击普通Button.CheckBox等控件,那么该验证的会得到验证,该提交的会提交,该报错的会报错,该被阻止的操作会被阻止.但如果单击的是工具栏上的项目(如ToolStripButton,之所以说项目而不是控件,你懂的),是不会触发焦点控件的验

VC中实现带有背景位图的树型控件

当前许多应用程序都在使用树型控件时为其添加了背景位图,增强的控件的魅力,然而对于Visual C++编程爱好者来说,使用Visual C++MFC提供的树型控件(CTreeCtrl)本身就是一个难点,至于如何使该控件能够带有背景位图,那就更加是一个令人困惑的问题了.本实例对CTreeCtrl类进行了增强,不仅使它带有背景位图,而且解决了在点击树型控件时背景位图闪动的问题,另外,通过在对话框中使用该控件来显示三级目录,演示了树型控件的基本使用方法.下图为程序编译后的运行效果图: 图一.带背景图的树

在ASP.NET 2.0中操作数据之四十六:使用SqlDataSource控件检索数据_自学过程

导言 到目前为止,我们探讨的教程是由表现层,业务逻辑层和数据访问层构成的层次体系结构.数据访问层和业务逻辑层分别在教程第一和第二章提到.在Displaying Data With the ObjectDataSource 这篇教程里,我们探讨了怎样用ASP.NET 2.0的新控件--ObjectDataSource控件在表现层展示数据. 本教程到目前为止用这种层次结构来处理数据.然而绕过这种体系结构,通过直接把数据查询和业务逻辑放在Web页面上,也可以达到直接在ASP.NET页面上访问,插入,更

在ASP.NET 2.0中操作数据之四十九:为GridView控件添加RadioButton_自学过程

导言: GridView控件提供了大量的内置功能.它包含了一系列的域(field)来显示诸如text.images.hyperlinks和buttons.另外它支持模板(template)用于用户自定义界面.我们可以构建这样一个GridView控件,用户仅需要点击控件里的一个按钮,每一条记录行都可以选择.编辑.删除.除了控件本身内置的功能外,在某些情况下,我们添加一些额外的.控件没有内置的功能.在本章及接下来的2篇教程里我们将探讨如何优化GridView,以支持额外的功能. 本篇及接下来的教程将

请求帮助 在net中如何根窗体句柄去查找所有控件的句柄啊

问题描述 在net中如何根窗体句柄去查找所有控件的句柄啊vb6做出来了,NET做不出来啊 解决方案 解决方案二:EnumChildWindows解决方案三:递归调用EnumChildWindows.解决方案四:还是没有办法实现啊给出我的代码,朋友帮我修改一下谢谢ImportsSystem.Runtime.InteropServicesImportsSystem.NetImportsSystem.IOImportsSystem.TextPublicClassForm3PrivateConstWM_

谁在java项目中在jsp页面加载gis视频控件,谁用过??

问题描述 谁在java项目中在jsp页面加载gis视频控件,谁用过?? 为什么在本地html上可以加载上,但是部署到项目上 通过jsp去打开 就无法加载到,显示不出视频呢.求大神 解决方案 视频指定的路径对不对?