gridview、listview适配器布局中带有checkbox实现的列表 checkbox只能有一项选中

fmxui 的使用,圆形按钮,listview,gridview加checkbox与重绘 FMXUI是一款非常好用的开源软件,再fmx跨平台界面开发时,完全可以用它作为基础组件,设计任何界面。我是6月份开始用的,后面用它搞了个android app,在android电视上运行稳定。现在在开发一款手机app开源地址:https://github.com/yangyxd/FMXUI `TView` 基本视图 `TViewGroup` 视图组 `TLinearLayout` 线性布局 `TRelativeLayout` 相对布局 `TGridsLayout` 格子布 阅读详情

先简单介绍下效果,手机话费充值、账户充值界面等有多个多选框选择套餐选项,默认只能有其中一项被选中,实现功能可以选择radiogroup和checkbox,但radiogroup在数据比较多的时候和布局比较复杂的情况下就不能很好的实现,所以采用checkbox来实现具体效果,请看效果图:


缴费金额可以由LinearLayout和relativelayout实现,但是充值套餐可能会有更多的套餐选择,为了更好的维护采用gridview来实现,整体思路就是gridview绑定的适配器中填充的convertview中只有一个checkbox,布局文件如下:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">


    <CheckBox
        android:id="@+id/checkBox"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:padding="10dp"
        android:button="@null"
        android:background="@drawable/box_blue_checked_selector"
        android:layout_centerHorizontal="true"
        android:textSize="16sp"
        />
</RelativeLayout>

可以根据具体的项目需求,checkbox做具体的修改,适配器中的代码:

public class BoxAdapter extends BaseAdapter{

    private LayoutInflater inflater;

    public BoxAdapter(Context context){
        inflater = LayoutInflater.from(context);
    }

    @Override
    public int getCount() {
        return mList == null ? 0 : mList.size();
    }
@Override
public Object getItem(int position) {
    return mList.get(position);
}

@Override
public long getItemId(int position) {
    return position;
}
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
    final ViewHolder viewHolder;
    if (convertView == null){
        convertView = inflater.inflate(R.layout.second_grid_item,null);
        viewHolder = new ViewHolder(convertView);
        convertView.setTag(viewHolder);
    }else {
        viewHolder = (ViewHolder) convertView.getTag();
    }
    String s = mList.get(position);
    viewHolder.checkBox.setText(s);
            viewHolder.checkBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
                @Override
                public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
                    if (isChecked) {
                        buttonView.setClickable(false);
                        if (button != null) {
                            button.setChecked(false);
                        }
                    }else button.setClickable(true);
                    button = buttonView;
                }
            });
            return convertView;
        }
    }

public class ViewHolder{
    public CheckBox checkBox;

    public ViewHolder(View view){
        checkBox = (CheckBox) view.findViewById(R.id.checkBox);
    }
}
适配器中主要实现逻辑就是checkbox点击事件,定义一个临时compoundbutton对象变量,在checkboxonCheckedChangeListener中判断如果当前item被选中则把当前item设置成不可点击,实现反复点击当前item时一直保持被选中状态,然后判断button是否为空,第一次点击的时候button为空,所以buttonview赋值给button,如果button不为空说明点击了其它item,则把上一个点击的item置为没选中状态,将上一个item置成可点击状态,本文只是提供了思路,具体可根据项目需求进行修改

3D模型文件格式全解析:从STL到glTF,10种主流格式与转换实战指南 在三维数字内容创作与工程制造领域,3D模型文件格式是数据交换与协作的基石。其核心原理在于以不同的数据结构(如三角网格、NURBS曲面、边界表示等)对三维物体的几何、外观及场景信息进行编码。理解这些格式的技术特性,对于保障数据完整性、提升工作流效率具有关键价值,广泛应用于3D打印、游戏开发、影视动画及工业设计等场景。例如,面向增材制造的STL格式以其极简的三角面片结构成为行业通用语,而支持丰富材质与动画的FBX格式则在影视游戏管线中扮演核心角色。本文聚焦于STL、OBJ、FBX、3MF、STEP等10种主流格 阅读详情

相关推荐

LTX-2.3 V1.6:8G显存本地AI视频生成工具与int8量化加速实践

这次我们来看一个本地部署的AI视频生成工具——LTX-2.3文字图片生成带音频视频工具V1.6版本。这个工具最大的特点是支持int8量化加速,相比原版提速2-4倍,效果更好,而且8G显存就能运行,不需要搭建复杂环境,解压即可使用。 对于想要在本地电脑上快速生成带音频视频内容的用户来说,这个工具解决了几个关键痛点:首先是硬件门槛低,8G显存意味着大多数主流游戏显卡都能胜任;其次是部署简单,避免了Python环境配置、依赖包冲突等常见问题;最后是性能优化明显,int8加速让生成速度大幅提升。 本文会重点演示如何

hqmln的博客 1235

checkbox多选框实现只单选

设置max=1,当选择一项后别的选项被禁用,需要再次点击取消,才能继续选择,不好用。比如给checkbox添加方法@change=“changeFun”只想要checkbox的样式,同时实现radio的单选效果。勾选项大于1时,删除掉上一个选项,只保留当前够选项,搞定。最简单的方法,用数组的shift方法就可以了。

m0_64152677的博客 2510

wincc 服务器授权型号,WinCC V7.5 SP1软件安装及授权方法

上篇教程给大家介绍了TIA Portal V16 安装方法,今天分享一下WinCC V7.5 SP1。目前V7.5 SP1是WinCC最新的版本,发布时间2019年11月13日。先放一个官网对WinCC V7.5 的介绍视频,感兴趣的可以先看一下。1、软件下载官网下载链接:https://support.industry.siemens.com/cs/document/109772879五个文件下...

weixin_39956110的博客 1万+

GridView利用CheckBox复选框列实现单选功能

自Dev13.2开始,GridView提供了自带的复选框列,该功能能实现多选操作,方便了不少,那如果想把这个自带的复选框列做成单选,那就需要单独处理了。 先补充一下,GridView的复选框列怎么设置,如下代码片段,只要设置前面两个属性即可在GridView看到有一列复选框(BandedGridView较老版本不支持这个功能,应该得在19.2或者20之后的版本才支持,具体可以看看自己的版本,如果设置无效,那么说明不支持): //设置显示复选框列 gridview.Option

涛神-Dev 的博客 2万+

Transformer代码(Pytorch实现和详解)!!!

这个是第一版,有些代码如果不对,欢迎在评论指正,后续会慢慢改,我也是刚接触transformer,若有些地方理解不对还请指正。

xml的博客 5613

C++继承与多态 - 继承多态原理01

C++继承多态原理讲解

大秦坑王的专栏 2979

android gridview item添加checkbox,手把手教你实现GridView中Checkbox全选

全选效果图这节讲得相对比较基础的东西,高手请忽略。首先新建一个GridviewAdapter继承BaseAdapterpublic class GridviewAdapter extends BaseAdapter{private ArrayList list;private static HashMap isSelected;private Context context;private Lay...

weixin_29338361的博客 463

GoDaddy域名解析 到 阿里云域名DNS

一:登录GODaddy,点击“个人中心”,然后点击“管理域名” 二:域名解析 第一种:直接解析到对应的服务器 添加一个,类型默认A,主机填写二级域名前缀(image.主域名),指向填写目标服务器ip即可(注意目标服务器80端口是否开放) 第二种:将主域名dns转到阿里云域名下 三:若要修给为阿里云解析服务器,要做以下修改,点击“更改” 点击更改后出现如下页面,此时需要到阿里云官网云解析DNS下添加域名解析 四:阿里云添加域名解析...

xiaolinzi176的博客 6705

listview和LitePal2

Student stu = LitePal.find(Student.class, model.getId()); //类名,查找id 修改: //先查询到数据,然后更改数据, Student stu = LitePal.find(Student.class, 1); stu.setUsername(“admin”); stu.save(); //更新指定id的数据 Student stu = new Student(); stu.setUsername(“admin”); stu.updat

m0_64867588的博客 242

Bootloader详解,理解Bootloader看这篇就够了

这里写目录标题一、Bootloader作用(目的)二、完成Boot最终目的的前提条件三、对前提条件的详细说明3.1、对前提条件(1)的说明:3.2、对前提条件(2)的说明:3.3、对前提条件(3)的说明:3.4、对前提条件(4)的说明:3.4、对前提条件(5)的说明:四、loader是干啥的 一、Bootloader作用(目的) Bootloader=Boot + loader Boot的目的: 最终目的:跳到C语言中;为了C语言运行程序会进行一系列的初始化,系统一上电后如何通过一系列的设置让软件程序员

iduuigdg的博客 11万+

Python批量注册脚本开发详细

开发一个Python批量注册脚本需要考虑多个方面,包括目标网站的注册流程、验证码处理、请求发送、数据存储等。以下是一个详细的开发流程和代码示例,用于实现基本的批量注册功能。

nsp202505的博客 3346

Android中GridView排列CheckBox和radiobutton及它们取值控制

项目中遇到的问题,先简单说下: CheckBox:Android中大多用到的就是APP登录时,自动登录,记住密码,这样单个进行控制比较容易;但当项目中有一块儿是多个值以复选框的形式展现(可以一个一个写,但这里推荐使用GridView,其adapter填充的布局就是一个CheckBox,很方便的控制数据变动),那就需要进行控制取值了。 radiobutton:说到radiobutton,大家首先

BlochCoding的博客 1574

面向 OData V4 的 Fiori elements 为何强制使用 draft、它到底是什么、以及是否能关闭

本文深入解析了SAP Fiori elements中draft handling的核心机制与必要性。关键点包括:1)draft机制通过中间版本实现复杂编辑的安全恢复与并发控制;2)Fiori elements for OData V4强制要求draft-enabled服务支持事务编辑;3)非draft服务仅适用于只读场景;4)替代方案需承担完全自定义开发的成本。文章基于SAP官方文档,系统阐述了draft在事务型应用中的基础性作用,为架构决策提供了明确指导。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 268

17、ListView & GridView

一、ListView listView是用来解决大量的相似数据显示问题,同时大量的数据会导致不断在内存中创建对象,可能导致OOM。 1.1、listView的属性 该控件采用MVC的设计模式,而且还有大量适配器,一般情况是:BaseXXX、BasicXXX、SimpleXXX、DefaultXXX。 除此之外,来看看ListView的常用事件: (1)setOnclickListen...

weixin_33941350的博客 173

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

Android完美解决ListView复用导致的Checkbox状态混乱问题

在Android开发中,ListView、RecyclerView和GridView控件是实现列表布局的不可或缺的工具,我觉得暂且可以这么说。比如QQ好友列表等,我们不可能用循环的方式去实现,这样对应用的性能也是有很大影响的。所以,为了记录之前遇到的这个问题,也顺便给其他需要解决这个问题的童鞋看一下,写了这篇文章(大神勿喷)! 当然,如果你的布局比较简单,你说我没必要复用,那么你看到这里可以r...

weixin_30575309的博客 215

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

Android 长按Listview显示CheckBox,实现批量删除

ListView实现的列表,如果长按某一个Item,可以显示右边隐藏的CheckBox,从而实现批量删除的功能。效果如图所示。 在网上看到一篇博客:Android 长按Listview显示CheckBox,实现批量删除。但是长按ListView的某一个Item后,其Item的CheckBox并未被选中,需要重新选择。 这篇博客虽然实现了长按ListView显示CheckBox并能批量删

tanghongchang123的博客 1064

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

android的控件常用方法是,Android常用控件属性分析

1、TextView单行文本输入框,使用过的事件是onClickListenerandroid:gravity="right':设置内容的对其方式android:layout_gravity="left":设置相对父控件的对齐方式android:singleLine="true":设置单行android:ellipsize="marquee":设置滚动android:focusable="true...

weixin_36360543的博客 198

Android--从零单排系列(2)--常用控件

常用控件基本的常用控件:略ScrollView(滚动条) 使用方式: 略Checkbox(多选框) 使用方式: 略RadioButton、RadioGroup(单选按钮)使用方式: RadioGroup rg_sex = (RadioGroup) findViewById(R.id.rg_sex);//选拿到一组单选按钮 int id = rg_sex.getChecked

tongzhengtong的博客 342

快速了解安卓开发的各个组件

1、4种布局方式 线性布局(LinearLayout)、相对布局(RelativeLayout)、帧布局(FrameLayout)、表格布局(TableLayout) 、约束布局 (ConstraintLayout) 2.列表视图(ListView) 3.下拉列表框(Spinner) 4.状态列表资源(StateListDrawable)【意思就是当你点击他时,他就会变颜色】 5.单击事件(findViewById)【通过这个语句将xml与java连接】 6.提示信息框(Toast) Toast.m

weixin_44868057的博客 482

Pro Android 4 第六章 构建用户界面以及使用控件(一)

目前为止,我们已经介绍了android的基础内容,但是还没开始接触用户界面(UI)。本章我们将开始探讨用户界面和控件。我们先讨论一下android中UI设计的一般原理,然后我们在介绍一下android sdk自带的UI控件,这些是你将要创建的UI的基本模块。我们还会讨论view 适配器和layout管理器。View适配器用来想控件提供数据,然后控件对数据进行显示。数据可以是数组,数据库或其它数据源

tanqiantot的专栏 3606

UI Layout

布局 布局3种方法 xml Java xml+java 四大布局 LinearLayout(线性布局) 6大属性 android.orientation:控制内部组件排列方向 android.gravity:控住内部组件的位置(文字在按钮中的位置) android.layout_gravity:控制自身在父组件的位置(按钮在布局中的位置) android.layout_height:控制自身在父组件的高度 android.height:控制组件内部内容的..

fyb1999的博客 406

android UI 设计 编程 思维

1.在很多情况下,我们都要用到ListView,但是用GridView是否更好呢? 答案: GridView同样可以实现ListView的功能,所以最好是用GridView,原因是为了避免日后的修改,例如,当前使用的是ListView,日后老板要改成网格显示,那是否又要改成 GridView呢。再例如,很多软件都有网格显示和列表显示切换功能,其实都应该是GridView才对,变的是列数属性,和

sqk1988-IT心园 1062

android系统控件大全,安卓系统控件大全

《本文定位》本系列的文章定位是让大家了解的安卓系统中的控件有哪些,会尽量的将安卓中的所有的控件的都的罗列出来。关于控件,可以的一直深入学习,一些的重要的控件,我会在单独的章节中的介绍。第一章Android中的控件一、能够自身显示内容的控件TextViewAutoCompleteTextViewMultiAutoComPleteTextViewEditTextButtonToggleButtonCo...

weixin_39943000的博客 145

Elasticsearch 7.6.0集群搭建实战:从零到Kibana接入全记录

Elasticsearch作为分布式搜索引擎,依靠集群节点协同实现高可用与水平扩展。在内部日志检索等场景中,常需搭建多节点集群。本文从版本选型开始,结合JDK、系统参数、目录规划等基础,详解elasticsearch.yml配置与启动排错,并逐步集成Kibana与elasticsearch-head,为测试或内部业务落地提供可靠参考。

weixin_33826609的博客 274

android checkbox实现单选功能,Android中ListView + CheckBox实现单选、多选效果

还是先来看看是不是你想要的效果:不废话,直接上代码,很简单,代码里都有注释1 单选public class SingleActivity extends AppCompatActivity {private ListView listView;private ArrayList groups;@Overrideprotected void onCreate(Bundle savedInstance...

weixin_28785757的博客 652

关于uniapp中checkbox-group限制选择个数,其余不可选。

今天有一个需求是,限制用户的选择个数,如果达到限制,其余的全部置灰,有一个被取消则全部都变为可选择。 效果图 布局 <checkbox-group name="2" style="display: flex;flex-wrap: wrap;padding-left: 24upx;" @change="checkChange($event)"> <label style="display: block;width: 224upx;hei..

m0_62154751的博客 2816
上一篇: 仿美团、京东、饿了么点击左边列表 右边切换布局UI
下一篇: 关于Android引入高德地图、百度地图、Qrcode、Jpush等三方架包报32位、64位找不到问题
ii哀情
博客等级 码龄10年 1粉丝 4原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值