android listview和radiobutton

问题描述

android listview和radiobutton

问题是这样的:1 listview 里面有多个item ,其中一个item是已经选中的,现在点击这个选中的radiobutton其他的radiobutton取消选中 ,这个功能已经做好了 了. 如图,但是点击未选中的radiobutton 想要把默认选中的radiobutton给去掉选中状态,可是没能成功!变成2个radiobutton都选中

    @Override
        public View getView(final int position, View convertView, ViewGroup parent) {
            ViewHolder item=null;
            if(convertView==null){
                item= new ViewHolder();
                //获得组件,实例化组件
                convertView=layoutInflater.inflate(R.layout.autoset_item, null);
                item.bankNameTxt=((TextView) convertView.findViewById(R.id.cardInfoTxt));
                item.checkAuto=((RadioButton) convertView.findViewById(R.id.checkAuto));
                item.cardIdHide=((TextView) convertView.findViewById(R.id.cardIdTextVIew));
                item.cardIdHide.setVisibility(View.INVISIBLE);

            //可以使用setTag把查找的view缓存起来方便多次重用
            convertView.setTag(item);
        }else{
            item=(ViewHolder)convertView.getTag();
        }

        final  RadioButton radio= (RadioButton) convertView.findViewById(R.id.checkAuto);
        item.checkAuto=radio;

        item.checkAuto.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
                //重置,确保最多只有一项被选中
                for (String key : states.keySet()) {
                    states.put(key, false);
                }
                states.put(String.valueOf(position), radio.isChecked());
                System.out.println(position + "----------------");

                CardAutoListAdapter.this.notifyDataSetChanged();
            }
        });

            boolean res=false;
            if(states.get(String.valueOf(position)) == null || states.get(String.valueOf(position))== false){
                res=false;
                states.put(String.valueOf(position), false);

            }
            else
                res = true;

            item.checkAuto.setChecked(res);
//默认选中
            if (data.get(position).get("isAutoPay").equals("0")){
                System.out.println(position);
                item.checkAuto.setChecked(true);
            }
//绑定数据 ,将传入data进行逐个赋值
        item.bankNameTxt.setText(data.get(position).get("bankName") + " **** **** **** " + data.get(position).get("endAcctid") + "");
            item.cardIdHide.setText(data.get(position).get("cardId") + "");

//            else{
//                //if (data.get(position).get("isAutoPay").toString().trim().equals("0")){
//                System.out.println(position);
//                item.checkAuto.setChecked(false);
//                //}
//            }
            return convertView;
    }
    static class ViewHolder {
         TextView bankNameTxt;//银行名称
         TextView cardInfoNo;//银行卡号
         RadioButton checkAuto;//代扣选择
         TextView cardIdHide;//卡号
    }

解决方案

使用SparseArray保存每个按钮的选中状态,key:position,value:true-false;
给convertView(或者单选按钮)设置点击事件,
每次点击选中相应的radioButton并将含有被点击radioButton的pos对应value置为true。
然后遍历SparseArray,将SparseArray中value等于false的radioButton置为不选中状态。

解决方案二:

有没有大神 指导一二

解决方案三:

你这个只是针对单个item操作 选中和不选中
需要你写个方法,去除其他item的勾选操作

解决方案四:

应该用CheckBox,不是RadioButton

解决方案五:

这个就是converview复用问题,所以需要一些adapter在内存中进行处理。以前项目开发也遇到过,网上解决方案也挺多,比如:http://blog.csdn.net/fastthinking/article/details/41014411

解决方案六:

1、在主Activity中创建一个static的list存放,是否选中的数据。再创建一个static的更新listview的方法。
2、每次选中item的button时,修改该list的数据(先全为false,再通过gettag方法找到item位置,设置为true)。
3、最后再执行更新listview的方法。
之前我也遇到过,用这个笨方法解决的。

时间: 2024-08-03 20:45:07

android listview和radiobutton的相关文章

android listview里面Radiogroup监听事件混乱

问题描述 android listview里面Radiogroup监听事件混乱 public class AdapterTest extends ArrayAdapter { private int resourceId; List<Test> listTest = new ArrayList<Test>(); private ViewHolder viewHolder; public AdapterTest(Context context, int resource, List

button 单选-android ListView中的Item有两行Button,要求实现单选效果,应该怎么做呢?

问题描述 android ListView中的Item有两行Button,要求实现单选效果,应该怎么做呢? 就是向这样的Button,在ListView的Item中,如果有两行,要能实现单选效果,应该怎么做呢?麻烦各位大神们说详细点~~ 解决方案 这个不用button,用radiobutton. 解决方案二: 我是在RadioGroup中嵌套了一个LinearLayout,这样就可以显示两行了,那么问题来了,radiogroup不能实现单选了,怎么办啊 解决方案三: 我是在RadioGroup中

Android listview与adapter详解及实例代码_Android

一个ListView通常有两个职责. (1)将数据填充到布局. (2)处理用户的选择点击等操作. 第一点很好理解,ListView就是实现这个功能的.第二点也不难做到,在后面的学习中读者会发现,这非常简单. 一个ListView的创建需要3个元素. (1)ListView中的每一列的View. (2)填入View的数据或者图片等. (3)连接数据与ListView的适配器. 也就是说,要使用ListView,首先要了解什么是适配器.适配器是一个连接数据和AdapterView(ListView就

Android ListView滑动过程中图片显示重复错乱闪烁的原因及解决方法

主要分析Android ListView滚动过程中图片显示重复.错乱.闪烁的原因及解决方法,顺带提及ListView的缓存机制. 1.原因分析 ListView item缓存机制:为了使得性能更优,ListView会缓存行item(某行对应的View).ListView通过adapter的getView函数获得每行的item.滑动过程中, a. 如果某行item已经滑出屏幕,若该item不在缓存内,则put进缓存,否则更新缓存: b. 获取滑入屏幕的行item之前会先判断缓存中是否有可用的ite

Android ListView的一个问题

需要的功能很简单,就是一个带checkbox的列表,提交时需要知道用户选择了那些项目,如下图: 使用SimpleAdapter作为数据适配器,重写SimpleAdapter.ViewBinder的方法,这样用比自定义Adapter要方便点,代码如下 datas定义是private List<Map<String, Object>> datas=null; 其中让Map中保存一项自我引用(my)绑定到checkBox private Map<String, Object>

android listview的headview

问题描述 android listview的headview 用别人的headview,为什么我的headview只显示了一半..是不是哪里设置问题 解决方案 解决了,listview的布局有个地方用了wrap_content,换成match_parent就好了 解决方案二: 明显是布局出了问题,改一下图片的伸缩方式就可以了 解决方案三: 你的布局拿出来看看,可能是高度设置有问题 解决方案四: <?xml version="1.0" encoding="utf-8&qu

Android ListView滑动过程中图片显示重复错位闪烁问题解决

主要分析Android ListView滚动过程中图片显示重复.错乱.闪烁的原因及解决方法,顺带提及ListView的缓存机制.1.原因分析ListView item缓存机制:为了使得性能更优,ListView会缓存行item(某行对应的View).ListView通过adapter的getView函数获得每行的item.滑动过程中, a. 如果某行item已经滑出屏幕,若该item不在缓存内,则put进缓存,否则更新缓存: b. 获取滑入屏幕的行item之前会先判断缓存中是否有可用的item,

Android ListView滚动到指定的位置_Android

本文介绍的关于ListView移动到指定位置有两种方法,下面话不多说,直接来看示例代码: listview.setSelection(position); listview.smoothScrollToPosition(position); 第一种方法没有滚动效果,直接跳到指定位置,第二种方法是有滚动效果的. 但是,在是用的时候,你会发现第二种方法没有效果,甚至都没有移动,其实这个问题很好解决,只要在新线程里是用就可以了 listview.post(new Runnable() { @Overr

Android ListView滚动到底后自动加载数据_Android

熟悉Android的朋友们都知道,不管是微博客户端还是新闻客户端,都离不开列表组件,可以说列表组件是Android数据展现方面最重要的组件,我们 今天就要讲一讲列表组件ListView加载数据的相关内容.通常来说,一个应用在展现大量数据时,不会将全部的可用数据都呈现给用户,因为这不管对于服 务端还是客户端来说都是不小的压力,因此,很多应用都是采用分批次加载的形式来获取用户所需的数据.比如:微博客户端可能会在用户滑动至列表底端时自动加 载下一页数据,也可能在底部放置一个"加载更多"按钮,