gpt4 book ai didi

android - 如何在动态 View 中只选择一个复选框

转载 作者:行者123 更新时间:2023-11-29 15:10:46 26 4
gpt4 key购买 nike

我有一个屏幕可以动态添加一行,其中包含两个 textView 和一个 CheckBox。我的问题是我只希望用户可以选中一个,而其他的必须取消选中。如果用户按下另一个复选框,启用它并禁用所有其他复选框。我已经测试了一些东西,但我没有得到我想要的功能。

我无法将配置从复选框更改为单选按钮,我必须使用我正在使用的方法:

private selected_position = -1;

protected void addGreetingToListView(final GreetingListJson greetings) {
View row = inflater.inflate(R.layout.main_greetings_settings_row, greetingListView, false);
row.setTag(greetings);

playButton = (ToggleButton) row.findViewById(R.id.detail_play_greeting);
TextView greetingName = (TextView)row.findViewById(R.id.greetingTitle);
greetingName.setDuplicateParentStateEnabled(true);
TextView greetingDescription = (TextView)row.findViewById(R.id.greetingDescription);
greetingDescription.setDuplicateParentStateEnabled(true);

checkBox = (CheckBox) row.findViewById(R.id.checkBox_greeting_list);
checkBox.setTag(greetings);


checkBox.setOnClickListener(new View.OnClickListener(){

@Override
public void onClick (View view) {

if (((CheckBox) view).isChecked())
{
selected_position= greetingListView.getChildCount();
}
else
{
selected_position=-1;
}
}

});


greetingName.setText(greetings.Name);
greetingDescription.setText(greetings.Description);


row.setOnClickListener(this);
row.setOnLongClickListener(this);
row.setFocusable(true);


greetingListView.addView(row);

}

复选框的 XML:

   <CheckBox
android:id="@+id/checkBox_greeting_list"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_marginRight="15dp"
android:layout_centerVertical="true"/>

最佳答案

首先,在类中声明一个ArrayList:

ArrayList<CheckBox> mCheckBoxes = new ArrayList<CheckBox>();

然后在 addGreetingToListView 中将每个新的复选框添加到 mCheckBoxes 并修改复选框的点击监听器:

checkBox.setTag(greetings);

mCheckBoxes.add(checkBox);
checkBox.setOnClickListener(new View.OnClickListener(){

@Override
public void onClick (View view) {

if (((CheckBox) view).isChecked())
{
for (int i = 0; i < mCheckBoxes.size(); i++) {
if (mCheckBoxes.get(i) == view)
selected_position = i;
else
mCheckBoxes.get(i).setChecked(false);
}

}
else
{
selected_position=-1;
}
}

});

关于android - 如何在动态 View 中只选择一个复选框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32136029/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com