android 开发 listview绑定radiobutton控件 如何实现listview列表中只有一个radiobutton被选中?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了android 开发 listview绑定radiobutton控件 如何实现listview列表中只有一个radiobutton被选中?相关的知识,希望对你有一定的参考价值。
android 开发 listview绑定radiobutton控件 如何实现listview列表中只有一个radiobutton被选中?而且再加入radiobutton后,listview的单击事件setOnItemClickListenerlistview无法响应 怎么做才能响应?求大神!
listview绑定radiobutton控件,需要用自定义的Adapter
控制RadminButton只能选一个的方法:
使用自定义Adapter
在adapter.getView方法中给RadminButton注册点击事件
在onClick事件中用个集合记录当前RadminButton的checked状态
调用adapter.notifyDataSetChanged(); 刷新列表即可
因为刷新列表的时候,会重新调用getView方法
radiobutton控件加上android:focusable = "false" 再重新设置监听事件就行了
你说的"如何实现listview列表中只有一个radiobutton被选中" 是什么意思 ?
有几个radiobutton? 只有一个就设置选中一个就完了 还想怎样?追问
因为listview中没加入一行数据就要有一个radiobutton 但是每行的radiobutton可以同时被选中 等于他们就不是一组的 也不能用radiogroup分组
追答listview item 在adapter 中设置选中就行了
追问啊?怎么设置 能不能说细点 谢谢!
追答你自己重写 adapter 然后在getView 方法中得到当前item中的radiobutton控件并设置成选中就行 这样每个item 都会有选中的 radiobutton了
追问不是 我要的是只有一个radiobutton被选中 现在可以这样
而我想这样,只能同时只有一个被选中
在getview方法里边加上判断就行了啊
参考技术B 1.setOnItemClickListenerlistview无法响应:radiobutton的父控件加上android:descendantFocusability= "blocksDescendants"
radiobutton控件加上android:focusable = "false"
2.只有一个radiobutton被选中:
首先:设置一个int变量,记录上次选中的条目,例如,int lastSelectedIndex;初始为-1,表示无选中项。
然后:在setOnItemClickListenerlistview中,当被选中时,设置lastSelectedIndex为当前的index,并且调用adapter.notifyDataSetChanged()来刷新。
最后:在adapter中的getView()中,判断如果当前的index == lastSelectedIndex,则将radiobutton设置为选中状态,否则是未选中状态。追问
我觉得你已经说的很细了 但是我是新手 还是听得不太懂 比如怎么获取当前的index,而且 像getView和adapter.notifyDataSetChanged()从来都没用过.你有没有例子之类的给我看看 谢谢!
追答setOnItemClickListenerlistview这个方法中会传给你一个int的值这个就是我说的index,你只需要写一下lastSelectedIndex = index;还有,在adapter中的getView()中也会有一个int值,这个就是我说的index
至于adapter.notifyDataSetChanged,是指当listView相对应的数据发生变化时,调用这个方法,listView才能刷新。
建议你先到网上搜索一下最简单的试用listVIew的方法,应该会很快的,然后你再来看我给你说的,就懂了。
有个其他的问题 我先更改listview选中item的背景颜色
public void onItemClick(AdapterView arg0, View arg1, int arg2,
long arg3)
listViewJobList.getSelectedView()
.setBackgroundColor(Color.GRAY);
但是他报错说nullpointerexception
,这是为什么?
getSelectedView(),如果被选中的view不在当前显示的屏幕中就是null
本回答被提问者和网友采纳转Android开发之ListView+EditText-要命的焦点和软键盘问题解决办法
Android开发之ListView+EditText-要命的焦点和软键盘问题解决办法 【原文链接】
这篇文章完美的解决了我几个月没结论的bug...
感谢热爱分享的技术达人~
我是怎么走进这个大坑的.....
需求:
在listview中出一个EditText 接受用户输入消息。
前期解决方案:
给这个EditText绑定焦点事件.... 悲剧就开始了...
知道吗?当这个EditTextView被点了下,它的焦点就不断的获取,失去,获取,失去... 只点一下... 就频繁的重复..最后大部分是失去焦点。而且在EditTextView中每输入一个字符它都会先失去焦点,再获取焦点...呵呵。
关于获取焦点是因为自己保存了变量。当软盘弹起时会重绘,需要重新给焦点。
正确解决方案:
不应该监听焦点事件,监听touch事件,当点一下时,就记下获取焦点,重绘时再给焦点。
文章简陋,请谅解~
以上是关于android 开发 listview绑定radiobutton控件 如何实现listview列表中只有一个radiobutton被选中?的主要内容,如果未能解决你的问题,请参考以下文章
Android - ListView 中的 EditTexts 绑定到自定义 ArrayAdapter - 跟踪更改
转Android开发之ListView+EditText-要命的焦点和软键盘问题解决办法
Android:将数据库中的数据绑定到 ListView 中的 CheckBox?