Android - listView 中的单选按钮?

2023-12-12

我有一个场景,我们应该在列表视图中有一个单选模式单选按钮。当我单击单选按钮时,它应该进入启用状态。当我单击整个项目时,它应该重定向到新活动。我参考了下面的链接

link1 , link2

我可以找到多项选择模式的方法。但不适用于单选模式。对此有什么想法吗?

???编辑??? 如何在列表视图中找到项目对应标签的标签


一种方法可以,但我不知道它是否完美。

当您单击另一个单选按钮时,跟踪现在选中单选按钮的列表视图的位置 ID,然后实施setOnCheckedChangeListener(listener)并检查已经检查的位置并取消选中该单选按钮。

您可以将单选按钮的状态存储到添加到列表视图中的自定义模型(包含文本视图、图像视图、单选按钮等列表视图单行控件的模型)

check this使用模型并将组件处理到列表视图中的文章,给出了一个复选框的示例

Update

我想你可以这样获得标签

((View)((ViewGroup)listview.getItemAtPosition(0)).getTag()).getTag();
or
((Button)l.getItemAtPosition(0)).getTag();

update 2

假设这是您的适配器和 arraylist 对象

private List<Model> list_model = new ArrayList<Model>();

private ArrayAdapter<Model> modelAdapter;

你的模型类看起来像这样

private class Model{
    private String text1 = "";
    private boolean isChecked   = false;

    public Model(String text1){
        this.text1 = text1;
        isChecked = false;
    }
}

你的观看者

private static class ViewHolder{
    TextView textView;
        RadioButton radioBtn;
}

在构造函数中将 listmodel 传递给此 CustomAdapter 类

private List<Model> list;
private Context context;

public CustomAdapter(Context context, List<Model> list){
    super(context,R.layout.list_layout,list);
    this.list = list;
    this.context = context;
}

now in getView()

@Override
public View getView(int position, View convertView, ViewGroup parent) {
    View view = null;

    if(convertView == null){
        LayoutInflater inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        view = inflater.inflate(R.layout.gcalendar_list_layout, null);
        final ViewHolder viewHolder = new ViewHolder();
        viewHolder.textView = (TextView) view.findViewById(R.id.text1);
        viewHolder.radioBtn = (RadioButton) view.findViewById(R.id.radioBtn);
        viewHolder.radioBtn.setOnCheckedChangeListener(new OnCheckedChangeListener() {
            public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
                Model element = (Model) viewHolder.checkBox.getTag();
                element.isChecked = buttonView.isChecked();
                boolean isChecked = true;
                for(int i=0;i<list.size();i++){
                    if(!list.get(i).isChecked){
                        list.get(i).isChecked=false; // more implement here or may be this work
                        break;
                    }
                }
            }
        });
        view.setTag(viewHolder);
        viewHolder.radioBtn.setTag(list.get(position));
    }else{
        view = convertView;
        ((ViewHolder)view.getTag()).radioBtn.setTag(list.get(position));
    }
    ViewHolder holder = (ViewHolder) view.getTag();
    holder.textView.setText(list.get(position).name);
    holder.radioBtn.setChecked(list.get(position).isChecked);
    return view;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android - listView 中的单选按钮? 的相关文章

随机推荐

  • 通过 SAS 从 ORACLE DB 导入 blob

    对每个人来说都是一天中的好时光 上周我在工作中遇到了一个巨大的问题 这是交易 我需要通过SAS从ORACLE数据库下载excel文件 blob 我在用 第一步我需要从oracle获取数据 我使用的构造 blob文件近100kb proc s
  • ace.js 和 Angular 的主题和模式路径推断问题

    抱歉 不幸的是 这个问题没有提供太多细节 因为我不确定到底需要什么来解释这个问题 首先 我正在尝试使用ng2 ace editor in my Angular应用 但我的设置并不标准 详细信息在另一个相关问题中 应用程序找不到 js 文件
  • 对非对象调用成员函数 rowCount()

    我的查询有问题 我最近转向 PDO 这对我来说有点新鲜 现在我需要在查询中使用 JOIN 从另一个表获取数据 而不需要执行两次 问题是 我收到此错误 Call to a member function rowCount on a non o
  • HashMap 持有重复的键

    在尝试时HashMap 我注意到一些奇怪的事情 运行 4 个线程 每个线程尝试将 key value 的键值从 0 到 9999 值设为常量字符串 当所有线程都完成后 map size 返回的值大于 10 000 这怎么发生的 这是否意味着
  • 为什么 C# 没有检测到 1970/1/1 处于 BST 之下?

    我正在使用第 3 方 API 该 API 将一天中的时间值返回为日期时间值 并填写 1970 年 1 月 1 日作为日期部分 所以对于凌晨 5 点 它会返回类似的内容1969 12 31T21 03 00 000 08 00 问题是 如果用
  • Gmail电子邮件发送c#

    当我尝试向同一电子邮件发送消息时 此代码有效 但在其他电子邮件中 则无法正常工作 var smtpClient new SmtpClient smtp gmail com Port 587 UseDefaultCredentials fal
  • 围绕 d3 地图投影创建弯曲边框

    我使用所示的 geoNaturalEarth1 在 d3 中创建了一张世界地图here 我使用带有此投影的 geojson 世界地图来获取地图 如下面的代码所示 然而 这表明各国漂浮在太空中 没有边界 我想在地图投影周围绘制边框 使其看起来
  • 将行开头的所有制表符匹配并替换为四个空格

    我在网站上阅读了一些其他问题和答案 但它们都与我所寻求的有点不同 用四个空格替换字符串开头的所有制表符 到目前为止我尝试过的 let m t tsomething t 查找标签并不难 t g 但这会得到不在行首的制表符 所以使用m matc
  • 如何在 Jupyter 笔记本中以编程方式生成 Markdown 输出?

    我想在 Jupyter 笔记本中写一份课程报告 我想计算一些东西 生成一些结果并将它们包含在降价中 我可以将单元格的输出设置为降价吗 我想要这样的命令 print phi 生成 phi 符号 就像在 Markdown 中一样 换句话说 我想
  • 关闭 Visual Studio 中的漂亮列表

    我有一个宏 插件 我需要在其中禁用 Vb Net漂亮的清单暂时的 尝试录制宏 但它只显示我打开了选项对话框 也尝试过 Dim props As EnvDTE Properties DTE Properties TextEditor Basi
  • GitLab CI 的 Docker 构建作业参数无效

    所以我正在尝试设置我的 Gitlab CI 来触发一个作业git push构建和部署我的 Docker 这是 gitlab ci yml我正在使用的文件基于 Gitlab 文档 Elixir yml 中的示例 stages build bu
  • 获取有关 WCF 中需要很长时间的方法的进度信息的有效模式?

    我想要获取有关 WCF 上调用的方法的进度更新 例如 我运行 1000 个查询并想知道当前状态 如果双工合约在您的环境中不可行 您将不得不诉诸轮询 您的初始方法可以返回一个标识符 可能是 GUID 然后您可以对另一个方法进行后续调用以检查进
  • 如何在Mac上运行shell命令?

    如何使用 Excel VBA 代码运行 shell 命令 我想跑chmod x Users asdasd Music playlistLoad sh穿过外壳 我使用 Python 实现了这一点os system Command here 在
  • 如何在 C# 中进行参数化 SELECT 查询?

    我正在尝试使用 DataGridView 以及 C 和 SQL Server 中的参数化查询来显示数据库中表中的数据 到目前为止 我已经尝试过这段代码 private void button1 Click object sender Eve
  • 复杂对象图的快速哈希码

    我有一个漂亮的复杂的物体我需要得到独特性这些物体 一种解决方案可以通过重写来完成GetHashCode 我已经实现了如下代码 public override int GetHashCode return this complexObject
  • 使用 System.IO.Compression.FileSystem 将完整目录添加到现有 zip 文件

    以下示例可在互联网和本网站上追溯 作为使用 NET Framework 4 5 压缩文件的解决方案 它可以工作 但是当存档已经存在时 它会给出错误 因为它似乎只能压缩文件夹并创建新的 zip 文件 Reflection Assembly L
  • Apache Commons Validator 帮助下的 NoClassDefFoundError 问题

    如果使用 Apache Commons Validator 会出现错误 java lang NoClassDefFoundError org apache oro text perl Perl5Util 即使 Apache Commons
  • 如何在 RestAssured 中设置 OAuth 领域

    我正在使用 RestAssured 库来自动化 NetSuite Restlet 此 Restlet 使用 OAuth 1 0 进行身份验证 除了消费者密钥 消费者秘密 访问令牌和令牌秘密之外 我还需要设置 REALM 等高级字段 但我找不
  • 构造一个没有默认构造函数的空对象

    假设我有一个类型F 我知道F是空的 但是F没有默认构造函数 所以我不能使用F 来构建它 有没有办法获得类型的有效对象F反正 我似乎记得有人提到过有一种神秘的联合用法 理想情况下 它会是constexpr友好的 这可能很有用 因为无捕获 la
  • Android - listView 中的单选按钮?

    我有一个场景 我们应该在列表视图中有一个单选模式单选按钮 当我单击单选按钮时 它应该进入启用状态 当我单击整个项目时 它应该重定向到新活动 我参考了下面的链接 link1 link2 我可以找到多项选择模式的方法 但不适用于单选模式 对此有