私はこれを研究しており、チェックボックスでドローイング可能なソリューションを見つけることができません。私がしようとしているのは、この特定のチェックボックスをクリックすると、対応する色のチェックボックスがフィルタリングされます。これは途中で断片化しています。だから、赤色、黄色、緑色のチェックボックスがあります。ユーザーがクリックすると、色が変わります。たとえば、私はchkProgressである黄色のチェックボックスを持っています。クリックすると、黄色のチェックボックスをすべて探し、黄色のチェックボックスをフィルタしたいと思います。だから、私はdrawableのIDを持っている、と私はdrawablesをその色であるチェックボックスを見つけることができるようにする必要があります。ユーザーがchkProgressをクリックしたときに黄色のチェックボックスにフィルタをかけたいと思っています。だから、ここに私のコードは次のとおりです。Android - 複数のチェックボックスを含むチェックボックスをクリックして、ドロワーブルでチェックボックスをフィルタリングする方法
ここprivate CheckBox [] checkBoxes = new CheckBox[2];
checkBoxes[0] = chkStart;
checkBoxes[1] = chkDownload;
private Drawable yellowDrawable = getResources().getDrawable(R.drawable.custom_yellow_checkbox);
chkInProgess.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if (chkInProgess.isChecked()){
//something here
if (chkStart.getDrawable == yellowDrawable) // need proper code here or a for loop to do this efficiently.
} else if (!chkInProgess.isChecked()){
chkInProgess.setChecked(true);
}
}
});
は、私は、彼らが黄色である場合に確認する必要がありますチェックボックスです:彼らは、特定の色であればここで
chkStart.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
countStart = checked(chkStart, countStart);
editor.putInt(CHECK_START_ID, countStart);
editor.apply();
}
});
chkDownload.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
countDownload = checked(chkDownload, countDownload);
editor.putInt(CHECK_DOWNLOAD_ID, countDownload);
editor.apply();
}
});
は、チェックボックスをチェックするための方法であり、 :私はアプリを再開したときにここで
public int checked(CheckBox checkBox, int count){
if (checkBox.isChecked()){
count++;
} else if (!checkBox.isChecked()){
checkBox.setChecked(true);
count++;
}
if (count == 1){
checkBox.setButtonDrawable(R.drawable.custom_yellow_checkbox);
}
if (count == 2){
checkBox.setButtonDrawable(R.drawable.custom_green_checkbox);
}
if (count > 2){
count = 0;
checkBox.setButtonDrawable(R.drawable.custom_red_checkbox);
}
return count;
}
はメソッドです:
@Override
public void onResume() {
super.onResume();
start = mSharedPreferences.getInt(CHECK_START_ID, 0);
start = idChecked(chkStart, start);
countStart = start;
download = mSharedPreferences.getInt(CHECK_DOWNLOAD_ID, 0);
download = idChecked(chkDownload, download);
countDownload = download;
}
したがって、私はdrawablesを取得し、その色であるチェックボックスに一致させようとしています。私は私を助ける何かを見つけることができません。どんな助けでも大歓迎です。ありがとう!
モデルに状態表現を持たせるのは理にかなっていませんか? – snowCrabs