单击列表项时如何设置单选按钮进行检查

时间:2014-03-20 13:22:09

标签: android listview android-radiobutton

我的listview出现问题(2个textview和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);

在我的活动类中,第一次点击工作,但第二次选择列表视图中的其他项目。

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

6 个答案:

答案 0 :(得分:4)

我在这里找到了解决方案: 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" />

答案 1 :(得分: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
        }
    }
});

编辑。

假设listListView,您可以执行以下操作:

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.
    }
});

答案 2 :(得分:0)

您可以设置列表setOnItemClickListener。

答案 3 :(得分:0)

您应该为&#39; convertview&#39;设置OnClick侦听器。并按如下方式切换radioButton -

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

答案 4 :(得分:0)

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

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

2.保持列表中每个单选按钮的选中状态。   如果更改单选按钮选中状态,请更新列表中的值。

答案 5 :(得分:-1)

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