S.P*_*.P. 1 checkbox android checkboxlist
我有一个动态添加两行textView和一个CheckBox的行的屏幕.我的问题是我只希望用户可以检查一个,其他人必须取消选中.如果用户按下另一个复选框,请启用此选项并禁用所有其他复选框.我测试了一些东西,但我没有得到我想要的功能.
我无法将配置从复选框更改为radioButton,我必须使用我正在使用的方法:
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);
}
Run Code Online (Sandbox Code Playgroud)
Checkbox的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"/>
Run Code Online (Sandbox Code Playgroud)
首先,宣布一个 ArrayList在课堂上:
ArrayList<CheckBox> mCheckBoxes = new ArrayList<CheckBox>();
Run Code Online (Sandbox Code Playgroud)
然后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;
}
}
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4747 次 |
| 最近记录: |