【问题标题】:How to set radio button to checked when i click on list item当我单击列表项时如何将单选按钮设置为选中
【发布时间】:2014-03-20 13:22:09
【问题描述】:

我的列表视图有问题(2 个文本视图和 1 个单选按钮)。

问题: 我的想法是用户点击列表视图中的项目,然后自动选中单选按钮。

我已经搜索了一段时间,但无法让单选按钮工作。

我的 XML

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

我的适配器

    r = (RadioButton) convertView.findViewById(R.id.rdBtn);
        r.setChecked(selectedPosition == position);
        r.setTag(position);
        r.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                //r.setChecked(true);
                Toast.makeText(context, InformationActivity.result,
                        Toast.LENGTH_SHORT).show();
                selectedPosition = (Integer) view.getTag();
                notifyDataSetInvalidated();

            }
        });
        return convertView;

我试过了

r.setChecked(true);

在我的活动类中,第一次单击有效,但第二次在列表视图中选择了不同的项目。

我希望你们中的一些人可以帮助我。 谢谢

【问题讨论】:

  • 只是盲拍 - r.requestLayout(); 设置为选中后?
  • @cyborg86pl 不要为我工作 :(

标签: android listview android-radiobutton


【解决方案1】:

我在这里找到了解决方案: How to check checkbox on clicking an image?

        searchList.setOnItemClickListener(new OnItemClickListener() {

        @Override
        public void onItemClick(AdapterView<?> arg0, View view,
                int position, long arg3) {

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

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

            itemcheck.setChecked(true);


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

【讨论】:

    【解决方案2】:

    我不确定我是否理解您想要实现的目标,但也许这会有所帮助?

    r.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
        @Override
        public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
            if (isChecked) {
                // radio button is checked
            } else {
                // radio button is not checked
            }
        }
    });
    

    编辑。

    假设list 是您的ListView,您可以执行以下操作:

    list.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView <? > parent, View view, int position, long id) {
            r.setChecked(true); // true to make r checked, false otherwise.
        }
    });
    

    【讨论】:

    • 我希望单选按钮在用户单击列表视图中的项目时自动检查它
    • 我已经用过 r.setChecked(true);它不起作用:(
    【解决方案3】:

    你可以设置列表setOnItemClickListener。

    【讨论】:

      【解决方案4】:

      您应该为“convertview”设置 OnClick 侦听器并按如下方式切换 radioButton-

       convertview.setOnClickListener(new View.OnClickListener() {
              @Override
              public void onClick(View view) {
                 radioButton.toggle()
              }
          });
      

      【讨论】:

      【解决方案5】:

      我通过使用以下功能解决了这个问题,

      1.使用radiogroup.clearCheck(); 清除列表视图滚动中单选按钮的所有选中状态。

      2.维护列表中每个单选按钮的选中状态。 如果单选按钮选中状态发生更改,则更新列表中的值。

      【讨论】:

        【解决方案6】:

        您可以在列表视图中使用 checktextview 并将 checktextview 的类型设置为看起来像单选按钮或使用背景图像进行 checktextview 检查,使其看起来像单选按钮。希望这对您有所帮助

        【讨论】:

        • 我该怎么做?这是否意味着我必须更改布局或只插入 checktextview?
        • @camo:你有自定义列表视图项。所以你可以只使用 checktextview 作为列表视图项,因为你可以将文本设置为 checktextview,右侧你会看到复选框。你需要更改复选框的样式到单选按钮。
        • 我可以使用checkedtextview在一个项目中设置2个文本视图吗?如何?我一直在寻找答案一段时间了:)
        • 是的,使用此链接,例如androidhive.info/2012/02/…自定义列表视图和自定义项目,您需要使用 textview,然后在 item.xml 文件中使用 checktextview,然后将文本设置为 textview 和 checktextview,然后在 listitem 单击监听器更改 checktextview 检查.希望这对你有帮助
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-05-18
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多