0
RecyclerView
하나의 텍스트보기와 하나의 맞춤식 어댑터가 인스턴스화 된 CheckBoxView
클래스를 클릭 할 수 있고 포커스도 가지고 있습니다. 모든 논리는이 수업에 있습니다.어댑터의 다른 항목을 클릭하면 이미지보기 선택 해제하는 방법
이제 단일 행에 테두리가 있으면 확인란이 노란색이고 클릭하면 회색입니다. 회색으로 저장된 이전에 클릭 한 항목이 빈 이미지로 이동하지 않고 이전 상태로 남아 있기 때문에 다른 항목을 클릭하면 문제가 발생합니다.
다른 CheckBox를 클릭하면 비어 있어야합니다.
public class MyCheckBoxView {
public enum CheckType {
ACTIVE, // YELLOW When check box has focus on
SELECTED, // GRAY When user selects view
EMPTY // // EMPTY When not selected
}
private CheckType checkType;
private ImageView view;
private boolean isChecked = false;
/**
* Constructor
*/
public MyCheckBoxView() {
setup();
}
//Setup method: Fill In View
private void setup() {
// Create view
view = new ImageView(BeelineApplication.get());
view.setFocusable(true);
view.setClickable(true);
setCheckType(CheckType.EMPTY);
view.setImageResource(R.drawable.beeline_check_box_empty);
// Set CheckBox focus behaviours
view.setOnFocusChangeListener(new View.OnFocusChangeListener() {
@Override
public void onFocusChange(View v, boolean hasFocus) {
if (hasFocus) {
checkType = CheckType.ACTIVE;
view.setImageResource(R.drawable.beeline_check_box_active);
} else {
// NO FOCUS
view.setImageResource(R.drawable.beeline_check_box_empty);
// If checkbox view is checked
if (isChecked) {
view.setImageResource(R.drawable.beeline_check_box_selected);
checkType = CheckType.SELECTED;
} else {
if (checkType == CheckType.SELECTED) {
view.setImageResource(R.drawable.beeline_check_box_selected);
isChecked = true;
} else {
view.setImageResource(R.drawable.beeline_check_box_empty);
isChecked = false;
}
}
}
}
});
// Set CheckBox state on click event
view.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (!isChecked) {
view.setImageResource(R.drawable.beeline_check_box_selected);
checkType = CheckType.SELECTED;
} else {
}
}
});
}
// GET VIEW - Called in Adapter
public View getView() {
return view;
}
//Set Check Type
public void setCheckType(CheckType checkType) {
this.checkType = checkType;
}
} 몇 가지 체크 박스는 모든 체크 박스에서 제거 회색을 확인하고 다음을 클릭 확인란
을에 회색 적용하면