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;
}
}