0
另一个项目点击时取消图像查看我RecyclerView
一个文本视图和一个定制的CheckBoxView
类,这是可以点击的,具有焦点以及它在适配器实例化。所有的逻辑都在这个类中。如何在适配器
现在,当单行具有焦点,复选框为黄色,点击时是灰色的。问题消失,当我点击,因为它被保存到灰不走空的图像前一次单击项目另一个项目,但仍维持在以前的状态。
点击另一个复选框时应该走空。
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;
}
}