最简单的ListView中实现单选和多选效果

androidstudio 实现ListView单选、多选效果最实用案例 附源码下载 亲试可用 androidstudio4 实现ListView单选、多选效果最实用案例 亲试可用 前言 用androidstudio写一个快递用的APP,里面要用到多选和单选,发现ListView原生就有多选和单选的功能。 一、无图无真像,先上图 二、使用步骤 在ListView的布局中设置了android:choiceMode属性后,item布局需要实现checkable,才有选中效果。 mainActivity代码: /** * @author ganggang * @date . 阅读详情

一.无图无真相
单选显示效果
多选显示效果
二.关键代码
1.主布局 sample_main.xml(单选和多选切换,设置android:choiceMode,其他不变)

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:showDividers="middle"
    android:divider="?android:dividerHorizontal">

    <TextView style="@style/Widget.DescriptionBar"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="@string/intro_message" />

    <!--
      当 ListView 已设置 choiceMode 时,它将允许用户"选择"
      一个或多个项目。该框架提供了默认列表项目布局,这显示标准单选按钮或复选框旁边
      单行文本:
       《 android:choiceMode="singleChoice"》
      R.layout.simple_list_item_single_choice 和
      《  android:choiceMode="multipleChoice"》
      R.layout.simple_list_item_multiple_choice。
      应该设置 android: scrollbarStyle (显示和隐藏)
       android:scrollbarStyle="outsideInset"不显示
       android:scrollbarStyle="insideOverlay"显示
    -->
    <ListView android:id="@+id/listview"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1"
        android:paddingLeft="@dimen/page_margin"
        android:paddingRight="@dimen/page_margin"
        android:scrollbarStyle="outsideInset"
        android:choiceMode="multipleChoice" />
</LinearLayout>

2.item布局

<!--
  从 sample_main.xml ListView 有 choiceMode 套,意思说当用户
选择列表项,列表视图将设置为该项目的根视图状态
(此 CheckableLinearLayout)"检查"。请注意,这需要查看
实现的接口。一旦选中根视图,则任何item,
有 duplicateParentState 属性设置的将继承此"选中"状态.
-->
<com.example.android.customchoicelist.CheckableLinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="horizontal"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingLeft="8dp"
    android:id="@+id/ll_contain"
    android:paddingRight="8dp"
    android:minHeight="?android:listPreferredItemHeight"
    android:gravity="center_vertical">

    <TextView android:id="@android:id/text1"
        android:duplicateParentState="true"
        android:layout_width="0dp"
        android:layout_weight="1"
        android:layout_height="wrap_content"
        android:textAppearance="?android:textAppearanceMedium"
        android:textColor="@color/hideable_text_color" />

    <ImageView android:src="@drawable/ic_hideable_item"
        android:duplicateParentState="true"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginLeft="16dp" />

</com.example.android.customchoicelist.CheckableLinearLayout>

3.自定义单选和多选布局

package com.example.android.customchoicelist;

import android.content.Context;
import android.util.AttributeSet;
import android.util.Log;
import android.view.View;
import android.widget.Checkable;
import android.widget.LinearLayout;

/**
 *自定义单选和多选布局
 */
public class CheckableLinearLayout extends LinearLayout implements Checkable {
    private static final int[] CHECKED_STATE_SET = {android.R.attr.state_checked};

    private boolean mChecked = false;

    public CheckableLinearLayout(Context context, AttributeSet attrs) {
        super(context, attrs);
    }
    //返回选中的状态
    public boolean isChecked() {
        return mChecked;
    }
    //设置选中的状态
    public void setChecked(boolean b) {
        if (b != mChecked) {
            mChecked = b;
            refreshDrawableState();
        }
    }
    //选择开关
    public void toggle() {
        setChecked(!mChecked);
    }
    //添加选中的条目状态
    @Override
    public int[] onCreateDrawableState(int extraSpace) {
        final int[] drawableState = super.onCreateDrawableState(extraSpace + 1);
        if (isChecked()) {
            mergeDrawableStates(drawableState, CHECKED_STATE_SET);
        }
        return drawableState;
    }
}

4.主要代码MainActivity.java

package com.example.android.customchoicelist;

import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.BaseAdapter;
import android.widget.ListView;
import android.widget.TextView;



/**
 *如何创建自定义的单或多选择
 * @author  孤狼
 * @since  2015-8-3
 */
public class MainActivity extends Activity {
    ListView listView;

    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.sample_main);
        listView =(ListView)findViewById(R.id.listview);
        listView.setAdapter(new MyAdapter());
        listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                //获取条目
                CheckableLinearLayout linearLayout = (CheckableLinearLayout) view.findViewById(R.id.ll_contain);
                if (linearLayout.isChecked()) {
                    Log.e("选中true", position + "");
                } else {
                    Log.e("未选中false", position + "");
                }
                /**对于多选,建议创建集合,用于封装用户选中的条目position,存入时判定                     用户来回切换的状态*/
            }
        });
    }

    /**
     * A simple array adapter that creates a list of cheeses.
     */
    private class MyAdapter extends BaseAdapter {
        @Override
        public int getCount() {
            return Cheeses.CHEESES.length;
        }

        @Override
        public String getItem(int position) {
            return Cheeses.CHEESES[position];
        }

        @Override
        public long getItemId(int position) {
            return Cheeses.CHEESES[position].hashCode();
        }

        @Override
        public View getView(int position, View convertView, ViewGroup container) {
            if (convertView == null) {
                convertView = getLayoutInflater().inflate(R.layout.list_item, container, false);
            }
            ((TextView) convertView.findViewById(android.R.id.text1))
                    .setText(getItem(position));
            return convertView;
        }
    }
}

三.说明
通篇没有多余的废话,不浪费大家的宝贵时间,代码简洁,主要部分都有注释,实际开发中的需求,需要牛牛们自己自定义,发挥,如有疑问,请留言—-孤狼

四.示例源码(由于孤狼使用的是Android studio开发,暂时没有eclipse版)

下载示例源码

Android列表选项、单选、多选对话框实践指南 本文还有配套的精品资源,点击获取 简介:在Android开发中,对话框是用于展示信息和收集用户输入的关键UI元素。本文详细介绍了如何使用Dialog、ListView以及适配器来实现列表选项、单选和多选对话框。从创建AlertDialog到自定义ListView项的样式和行为,再到处理选中状态和用户交互,本文通过实例代码和解释,指导开发者构建用户友好的交互式界面。 ... 阅读详情

相关推荐

listview 实现多按钮操作

listview 上有两个按钮 一个编辑文本 一个按钮为加 一个为减 编辑文本为只读 触发按钮事件 文本相应变化

在ListView中实现单选功能、实现数据回调

可参考博文: https://www.jianshu.com/p/6af0a7a59756

鲁迷那的专栏—坚持实践后再写出来! 417

listview添加图片按钮 及按钮跟ListView双监听

实现了ListView添加图片、按钮并添加了ListView跟Button 的双监听,Button实现的是Activity的跳转

Android ListView 使用checkbox 实现 单选、多选操作

待完成。。。

Ricky 1万+

FOC无刷电机磁编码器机械角度与电角度自动对齐校准及电机极对数自动获取的方法

本文提出磁编码器机械角度与电角度自动对齐校准方法及电机极对数自动获取方案。通过通直流电流使转子定向,读取机械角度并计算电角度偏移量,实现精确对齐;同时利用低速旋转时检测反电动势过零点次数,结合机械角度变化量自动计算极对数。核心算法包括转子定向、偏移量计算、极对数推导等步骤,并提供了基于STM32的C语言实现代码。该方法适用于工业伺服、机器人等高精度控制场景,需注意负载安全、参数调整和误差处理。两种自动化流程可有效解决电机安装调试中的角度对齐和参数识别问题。

qq_29653575的博客 2484

HTML5期末大作业:关于家乡介绍的HTML网页设计——郑州美景HTML+CSS(5页) 学生DW家乡介绍网页设计作业成品 web课程设计网页规划与设计

HTML5期末大作业:我的家乡——郑州美景HTML+CSS(5页) 学生DW网页设计作业成品 web课程设计网页规划与设计 计算机毕设网页设计源码 常见网页设计作业题材有 个人、 美食、 公司、 学校、 旅游、 电商、 宠物、 电器、 茶叶、 家居、 酒店、 舞蹈、 动漫、 明星、 服装、 体育、 化妆品、 物流、 环保、 书籍、 婚纱、 游戏、 节日、 戒烟、 电影、 摄影、 文化、 家乡、 鲜花、 礼品、 汽车、 其他 等网页设计题目, A+水平作业, 可满足大学生网页大作业网页设计需求, 喜

qq_365392777 1万+

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

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

weixin_36026454的博客 629

kubeadm init 运行时kebelet启动失败问题

解决k8s kubeadm init时遇到的kubelet问题

ZDPZN的博客 6074

Android实现列表单选和多选,ListView+CheckedTextView

CheckedTextView + ListView 可以简单地实现单选和多选列表; <CheckedTextView xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http...

qq_35473951的博客 1860

Mann-Kendall检验全解析:从原理到11种变体及Python实现

本文全面解析Mann-Kendall检验,从基础原理到应对自相关、季节性等复杂数据的11种关键变体,如Hamed-Rao修正、季节性MK和趋势自由预白化(TFPW)。详细阐述各方法的适用场景与数学原理,并提供完整的Python实战代码,帮助研究者针对不同数据特性选择最稳健的趋势分析方法。

weixin_29050271的博客 458

STM32G474使用HRTIM触发多路ADC采样,通过DMA传输,通过串口打印显示,实现PWM中间时刻采样,避免开关噪声

本章工程使用HRTIM定时器进行ADC的触发,打开主定时器,子定时器A,B,C。(本工程未使用到A与C定时器,配置时可无需打开)主定时器配置:设置主定时器的频率为100KHz,并且设置自动更新以及自动重装载值。子定时器B设置:设置子定时器B为100KHz,并且每九次计数完成后产生一次中断。配置如上:1.打开自动预装载值2.打开自动复位3.设置死区时间以及互补PWM4.定时器复位触发更新寄存器5.定时器翻转重置更新6.重置触发源(定时器计数器在发生更新事件时重置)

weixin_41407439的博客 4908

ListView实现item单选、多选效果(没使用复选框) checkable接口

CustomChoiceList ListView实现item单选、多选效果 ListView中有一个属性:android:choiceMode,对应三个可选值: singleChoice 单选multipleChoice 多选none 默认情况,没有选中效果 在ListView的布局中设置了android:choiceMode属性后,item布局需要实现check

普羅●米修斯 ——— HelloWorld 1万+

非标准包 game.rgss3a 的打开方法 | 2023 年实测

生活笔记

陌雨’的博客 1万+

QML ListView实现多选操作

需求: 单击默认为单选,按住Ctrl+点击为任意项多选,按住Shift+点击为连续项多选 分析: 1.点击时区分按键状态来进行不同的操作; 2.根据不同的操作修改列表项的选中状态。 在Qt Widgets框架中,点击事件的QMouseEvent可以通过modifiers函数获取点击时按键的状态。在QML中,MouseArea的clicked(MouseEvent mouse)信号传递的M...

龚建波 5104

电气设备Simlink仿真(Matlab)

目录 1、电气设备的分类及原理 2、直流输电控制与保护的仿真 (1)本次实验直流输电控制与保护的主电路: (2)直流输电的控制 2、资源下载(百度网盘) 1、电气设备的分类及原理 电气设备大体上可以分为一次设备、二次设备,本次仿真实验主要讲解的是高压直流输电的控制与保护仿真。高压直流输电的原理是整流和有源逆变的应用。下图是一个简单的单极直流输电系统,属于晶闸管的整流电路,交流通过晶闸管的整流变成直流,变成直流后通过长距离输电送往远端,送到远端的直流经过晶闸管的有源逆变变成交流,...

weixin_46039719的博客 1418

大模型实战—通义千问大模型微调

这个参数仅针对 llama 类型的模型结构,默认勾选的是 q_proj 和 v_proj,具体的名词不容易理解,我就不多说了,可以简单的认为是对模型的理解能力进行优化,一般这两个就够了。当这个值较高时,适应新任务的能力会增强,但是对基础模型的影响会比较大,有过拟合的风险,尤其是在数据量有限的情况下。为了方便测试,我在云环境也创建了一个镜像,相关的环境都配置好了,可以直接使用几个国内开源的大语言模型,比如清华智谱的ChatGLM3-6B、零一万物的Yi-34B,还有最近阿里云开源的Qwen1.5-32B。

7万+

(Android)五分钟让你轻松学会ListView单选和多选功能

在实现ListView单选时,我们可以在 Adapter中自己创建一个selectPosition参数, 这样是能实现需求。 但加入要是再加一个多选 接着又在Adapter中创建了一个记录选中position的集合,也是可以实现的,但是实现起来还是相关繁琐的。过程很不乐观。 这里介绍一种相对简单的实现方式。 关键点,利用ListView中的Choice来

爱开发 2761

IMSL CNL 7.0.0 (x86-64)Crack

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

简单实现单选多选(GrideView实现单选,ListView实现多选),横向ListView

本文小demo实现了以下几个常用的功能,横向listview即HorizontalListView,listview的多选,grideView的单选。

骑猪追大象 2113

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

Android实现LIstView条目单选和多选RadioButton

看效果图是不是你想要的 ListView的布局 <ListView android:choiceMode="singleChoice" android:background="#fff" android:layout_marginTop="5dp" android:id="@+id/listview_template" and

sungeAndroid的博客 1402

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

Android ListView 分分钟实现Item单选、多选效果

ListView中有一个属性:android:choiceMode,对应三个可选值: singleChoice 单选 multipleChoice 多选 none 默认情况,没有选中效果 在ListView的布局中设置了android:choiceMode属性后,item布局需要实现checkable,才有选中效果。 那么我们先来看一下这个checkable接口: /** * Defines an extension for views that make them checkable. *

az44yao的专栏 702

自定义ListView item包含checkbox实现单选和多选

CheckBox本为复选框,仍然可以当单选框用 自定义ListView item中包含一个textview 和checkbox,checkbox选中级别高于item,故在xml中进行屏蔽 单选方法:(该方法同样适用于radiobutton) main.xml <LinearLayout xmlns:android="http://schemas.android.com/apk

LilySea2012的专栏 7434

Android ExpandableListView单选以及多选实现

一、概述 ExpandableListView是常用的一个控件,今天自己做了个小练习,主要需求是单选以及多选的实现,看似比较简单,但是还是比较复杂,把代码贴给大家,有这种需求的可以参考一下。 二、效果截图 三、实现过程 activity_main.xml <LinearLayout xmlns:android="http://schemas.android.com/apk/res/

青春还年少的专栏 5563

android的实现单选功能,Android ListView 分分钟实现Item单选、多选效果

ListView中有1个属性:android:choiceMode,对应3个可选值:singleChoice 单选multipleChoice 多选none 默许情况,没有选中效果在ListView的布局中设置了android:choiceMode属性后,item布局需要实现checkable,才有选中效果。那末我们先来看1下这个checkable接口:/*** Defines an extens...

weixin_35079766的博客 1177

ListView 单选、多选、模式

ListView 与 Checkable

qq_15736263的博客 728
上一篇: 关于图片矩阵
下一篇: 最简单通用加载效果---完全实现自定义
Litepal
博客等级 码龄12年 17粉丝 38原创
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值