2

我的列表视图有问题(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);

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

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

4

6 回答 6

4

我在这里找到了解决方案: 如何在单击图像时选中复选框?

        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" />
于 2014-03-24T13:40:24.700 回答
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.
    }
});
于 2014-03-20T13:27:44.377 回答
0

您可以设置列表 setOnItemClickListener。

于 2014-03-20T13:31:05.687 回答
0

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

 convertview.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
           radioButton.toggle()
        }
    });
于 2014-03-20T13:46:19.930 回答
0

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

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

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

于 2018-02-08T07:06:27.207 回答
-1

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

于 2014-03-20T13:27:58.273 回答