我想问一下如何在不执行操作的情况下取消选中复选框,然后选中复选框*(即不触发 onCheckChangedListener()
)*?
我有 oncheck 操作,但我想禁用此操作以取消选中。是否可以 ?
这是我的代码:
chb_czy_zamowic.setOnCheckedChangeListener(new OnCheckedChangeListener() {
@Override
public void onCheckedChanged(
final CompoundButton buttonView, boolean isChecked) {
// TODO Auto-generated method stub
final Dialog d1 = new Dialog(context);
d1.setContentView(R.layout.ilosc);
d1.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
d1.setTitle("Wybierz ilość");
final EditText et_Ilosc;
Button b_Ok;
Button b_Odejmij;
Button b_Dodaj;
if (buttonView.isChecked()) {
et_Ilosc = (EditText) d1
.findViewById(R.id.et_Ilosc);
et_Ilosc.setText(String.valueOf(i));
b_Dodaj = (Button) d1.findViewById(R.id.b_Dodaj);
b_Dodaj.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
String zmienna_pom = et_Ilosc.getText()
.toString();
i = Integer.valueOf(zmienna_pom);
setI(i);
int k = getI();
k++;
setI(k);
et_Ilosc.setText(String.valueOf(i));
}
});
b_Odejmij = (Button) d1
.findViewById(R.id.b_Odejmij);
b_Odejmij.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
String zmienna_pom = et_Ilosc.getText()
.toString();
i = Integer.valueOf(zmienna_pom);
setI(i);
i--;
setI(i);
et_Ilosc.setText(String.valueOf(i));
}
});
b_Ok = (Button) d1.findViewById(R.id.b_Ok);
b_Ok.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
String zmiennna_pom = et_Ilosc.getText()
.toString();
int k = Integer.valueOf(zmiennna_pom);
if (k<=0 || k>=100) {
Toast t = Toast.makeText(getContext(),
"Niepoprawna wartość" ,
Toast.LENGTH_SHORT);
t.show();
view.chb_czy_zamowic.setChecked(false);
d1.cancel();
}
else if( et_Ilosc.getText().toString().equals(""))
{
Toast t = Toast.makeText(getContext(),
"Uzupełnij pole ilość" ,
Toast.LENGTH_SHORT);
t.show();
view.chb_czy_zamowic.setChecked(false);
d1.cancel();
}
else
view.chb_czy_zamowic.setEnabled(false);
view.chb_czy_zamowic.setChecked(false);
items.get(position).Tow_ilosc -= k;
Towar checkedObject = new Towar();
checkedObject.Tow_ilosc = k;
checkedObject.Kat_id = items
.get(position).Kat_id;
checkedObject.kategoria = items
.get(position).kategoria;
checkedObject.Tow_cena = items
.get(position).Tow_cena;
checkedObject.Tow_id = items
.get(position).Tow_id;
checkedObject.Tow_nazwa = items
.get(position).Tow_nazwa;
MainActivity.lista_wybranych_towarow
.add(checkedObject);
k = 0;
setI(0);
// et_Ilosc.setText("");
if (MainActivity.lista_wybranych_towarow
.size() > 0) {
b_zatwierdz
.setVisibility(View.VISIBLE);
TowarZamowienie.towary_zamowione = new ArrayList<Towar>(MainActivity.lista_wybranych_towarow);
Collections
.copy(TowarZamowienie.towary_zamowione,
MainActivity.lista_wybranych_towarow);
} else {
Toast t = Toast.makeText(
getContext(),
"Proszę wybrać ilość",
Toast.LENGTH_LONG);
t.show();
}
d1.dismiss();
}
});
}
;
d1.show();
}
});
最佳答案
有一个属性 setClickable 与我认为可以使用的 View 相关联。在 onCheckedChangeListener 中,查看它何时取消选中,然后将其设置为 false。希望这对您有用。
关于java - 如何在没有操作的情况下取消选中复选框然后进行检查?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21754107/