自定义 ListView 与 RadioButton 单选

2024-03-15

我希望你们中的一些人可以帮助我解决这个问题:

我有一个自定义列表视图 2 个文本视图和 1 个单选按钮。

我想把它作为单一选择,但每次我 单击列表视图上的项目,它不会删除该项目 从另一个单选按钮“检查”。

我的xml代码:

<LinearLayout
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" >

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="vertical" >

        <TextView
            android:id="@+id/tvMaterialName"
            android:layout_width="250dp"
            android:layout_height="fill_parent"
            android:padding="5dp"
            android:text="MaterialName"
            android:textSize="35px" />

        <TextView
            android:id="@+id/tvMaterialNo"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:padding="5dp"
            android:text="MaterialNo"
            android:textSize="1px"
            android:visibility="invisible" />
    </LinearLayout>

    <RadioButton
        android:id="@+id/rdBtn"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:focusable="false"
        android:checked="false" />
</LinearLayout

和我的 onItemClickListener:

searchList.setOnItemClickListener(new OnItemClickListener() {

        @Override
        public void onItemClick(AdapterView<?> parent, View v,
                int position, long id) {

            LinearLayout item_view = (LinearLayout) v;
            RadioButton itemcheck = (RadioButton) item_view
                    .findViewById(R.id.rdBtn);

            itemcheck.setChecked(true);
            if (itemcheck.isChecked()) {
                itemcheck.setChecked(true);
            } else {
                itemcheck.setChecked(false);
            }
           }

    });

我的适配器中的 getView()

@Override
public View getView(final int position, View convertView, ViewGroup parent) {
    final ViewHolder viewHolder;
    final Materials materialItem = getItem(position);
    parent.setClickable(true);

    LayoutInflater inflater = (LayoutInflater) context
            .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    if (convertView == null) {

        convertView = inflater.inflate(R.layout.d, null, false);
        viewHolder = new ViewHolder();
        viewHolder.tvMaterialName = (TextView) convertView
                .findViewById(R.id.tvMaterialName);
        viewHolder.tvMaterialNo = (TextView) convertView
                .findViewById(R.id.tvMaterialNo);

        convertView.setTag(viewHolder);

    } else {
        viewHolder = (ViewHolder) convertView.getTag();

    }

    viewHolder.tvMaterialName.setText(materialItem.getMaterialName());
    viewHolder.tvMaterialNo.setText(materialItem.getMaterialNo());

    return convertView;

谢谢您的帮助


尝试这样:

public class CheckedLinearLayout extends RelativeLayout implements
    Checkable {

private boolean isChecked;
private List<Checkable> checkableViews;

public CheckedLinearLayout (Context context, AttributeSet attrs,
        int defStyle) {
    super(context, attrs, defStyle);
    initialise(attrs);
}

public CheckedLinearLayout (Context context, AttributeSet attrs) {
    super(context, attrs);
    initialise(attrs);
}

public CheckedLinearLayout (Context context, int checkableId) {
    super(context);
    initialise(null);
}

public boolean isChecked() {
    return isChecked;
}

public void setChecked(boolean isChecked) {
    this.isChecked = isChecked;
    for (Checkable c : checkableViews) {
        c.setChecked(isChecked);
    }
}
public void toggle() {
    this.isChecked = !this.isChecked;
    for (Checkable c : checkableViews) {
        c.toggle();
    }
}

@Override
protected void onFinishInflate() {
    super.onFinishInflate();

    final int childCount = this.getChildCount();
    for (int i = 0; i < childCount; ++i) {
        findCheckableChildren(this.getChildAt(i));
    }
}

/**
 * Read the custom XML attributes
 */
private void initialise(AttributeSet attrs) {
    this.isChecked = false;
    this.checkableViews = new ArrayList<Checkable>(5);
}

/**
 * Add to our checkable list all the children of the view that implement the
 * interface Checkable
 */
private void findCheckableChildren(View v) {
    if (v instanceof Checkable) {
        this.checkableViews.add((Checkable) v);
    }

    if (v instanceof ViewGroup) {
        final ViewGroup vg = (ViewGroup) v;
        final int childCount = vg.getChildCount();
        for (int i = 0; i < childCount; ++i) {
            findCheckableChildren(vg.getChildAt(i));
        }
    }
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

自定义 ListView 与 RadioButton 单选 的相关文章

随机推荐

  • 单括号和双括号 Numpy 数组的区别?

    这两个 numpy 对象有什么区别 import numpy as np np array 0 0 0 0 np array 0 0 0 0 In 71 np array 0 0 0 0 shape Out 71 1 4 In 72 np
  • 在 [FINE UPLOADER] 中显示以前上传的图像

    我正在使用精细的上传器插件来上传图像 图片上传工作正常 我想做的是 当图像上传后刷新页面时 精细上传器应该显示以前上传的图像 这是我的代码 accordion on shown bs collapse function activeShop
  • 如何在 Laravel Eloquent 中使用带有子查询的内连接

    注意 这是 laravel 5 3 基本上 当用户选择阿拉伯语翻译时 我正在运行查询 完整的 sql 如下所示 select s ref t text as ref ar FROM stores AS s INNER JOIN SELECT
  • 在 SharePoint 2013 中以编程方式创建文件夹

    目前我有在中创建文件夹的代码Documents运行时目录 using var context new Microsoft SharePoint Client ClientContext sharePointSite context Cred
  • 方案中的河内塔(递归)

    今天在scheme中写了如下代码 但是求值错误 请不要告诉我我编程很糟糕 我知道这是一个经典的递归问题 但我遇到了麻烦 define towers of hanoi n source temp dest if n 1 begin displ
  • 解析 ISO 8601 值 24:00:00 的日期失败

    我正在尝试解析来自数据源的传入日期 无法更改 它给了我 ISO 8601 格式示例的时间 2007 04 05T24 00 然而在 Net 中它无法将其解析为有效时间 维基百科指出它应该是有效的格式 维基百科 ISO 8601 http e
  • 更少的 mixin 和变量

    我有以下混合 iconFont color green font size 18px color color font size font size 如果我只想更改第二个变量值 我需要编写第一个变量默认值吗 h1 iconFont gree
  • Drupal 7在自定义主题中覆盖jquery js文件

    是否可以重写 覆盖自定义模板脚本变量中使用的默认 Drupal 7 26 jquery 我的意思是js文件之一 通过自定义主题来的一个 我试过这个sites all MYTPL template php但它不起作用 scripts misc
  • 不在映射中的字段包含在 ElasticSearch 返回的搜索结果中

    我想使用 Tire gem 作为 ElasticSearch 的客户端来索引 pdf 附件 在我的映射中 我从 source 中排除附件字段 以便附件不会存储在索引中 并且未在搜索结果中返回 mapping source gt exclud
  • Visual Studio Android 模拟器网络不工作

    I started using xamarin in visual studio and I installed visual studio android emulator Emulator works flawlessly but ne
  • 编辑超链接 Excel 2010 宏

    好的 我想创建一个宏来替换超链接的一部分 我的 Excel 文件中有大量的超链接 有没有办法创建一个宏来做到这一点 例如 www OldName com www Oldname com a www Oldname com b to www
  • C++ 非阻塞异步定时器

    我读过很多关于这个问题的帖子 但没有找到这个问题的答案 我想制作一个在后台运行并在完成后执行某些操作的计时器类 甚至我想一次调用多个异步倒计时的计时器 我在搜索这个类时发现了它 它似乎有效 但不在后台 我怎样才能将它转换为我想要的 Time
  • 如何在jquery mobile中初始化页面? pageinit 未触发

    在 jquery 移动页面上初始化对象的正确方法是什么 这事件文档 http jquerymobile com test docs api events html说使用 pageInit 没有该函数的示例 但给出了绑定到 的示例pagein
  • 在 iphone 应用程序中使用来自 sharekit 的 twitter 时无法验证 OAuth

    我正在 iphone 应用程序中使用 sharekit 实现 facebook 和 twitter 共享 Facebook 共享工作正常 但 twitter 共享出现错误 无法验证 OAuth 我遇到了同样的问题 这解决了它 https g
  • 使用 Fluent Nhibernate Table-Per-Subclass 策略时可以指定标识列吗?

    我正在创建一个 Fluent N hibernate 子类映射 目前看起来像这样 public class TaskDownloadMap SubclassMap
  • Github Actions,如何在作业步骤之间共享计算值?

    是否有一种 DRY 方法可以使用 Github Actions 在多个作业步骤中计算和共享值 在下面的工作流程 yml 文件中 回声 GITHUB REF 剪切 d f3 GITHUB SHA 在多个步骤中重复 name Test Buil
  • 用于自定义日志的 Logstash Grok 过滤器

    我有两个相关问题 第一个是如何最好地处理具有 混乱 间距等的日志 第二个 我将单独询问 是如何处理具有任意属性值对的日志 看 Logstash Grok 过滤器用于具有任意属性值对的日志 https stackoverflow com qu
  • Marshmallow 应用程序权限撤销通知? [复制]

    这个问题在这里已经有答案了 在 Android 6 0 Marshmallow 中 用户可以撤销特定的应用程序权限 即使是从应用程序内部授予该权限也是如此 我知道我可以检查权限ContextCompat checkSelfPermissio
  • 启动spark shell时出错

    我刚刚下载了最新版本的 Spark 当我启动 Spark shell 时 出现以下错误 java net BindException Failed to bind to 192 168 1 254 0 Service sparkDriver
  • 自定义 ListView 与 RadioButton 单选

    我希望你们中的一些人可以帮助我解决这个问题 我有一个自定义列表视图 2 个文本视图和 1 个单选按钮 我想把它作为单一选择 但每次我 单击列表视图上的项目 它不会删除该项目 从另一个单选按钮 检查 我的xml代码