繁体   English   中英

单击适配器中的另一个项目时如何取消选择图像视图

[英]how to deselect Image View when clicked on another item in adapter

我有一个带有一个文本视图和一个自定义CheckBoxView类的RecyclerView ,该类是可单击的,并且具有焦点以及在适配器中实例化的焦点。 所有逻辑都在此类中。

现在,当单行具有焦点时,复选框为黄色,单击时为灰色。 当我单击另一个项目时,问题就解决了,因为先前单击的项目已保存为灰色,不会变为空白图像,而是保持先前的状态。

单击另一个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(getContext());
    view.setFocusable(true);
    view.setClickable(true);

    setCheckType(CheckType.EMPTY);
    view.setImageResource(R.drawable.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.check_box_active);
            } else {
                // NO FOCUS
                view.setImageResource(R.drawaable.check_box_empty);

                // If checkbox view is checked
                if (isChecked) {
                    view.setImageResource(R.drawable.check_box_selected);
                    checkType = CheckType.SELECTED;
                } else {
                    if (checkType == CheckType.SELECTED) {
                        view.setImageResource(R.drawable.check_box_selected);
                        isChecked = true;
                    } else {
                        view.setImageResource(R.drawable.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.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;
}}

你应该做这样的事情
选中某些复选框后,从每个复选框中删除灰色,然后将灰色应用于单击的复选框
选中它时,您将获得被单击并选中的复选框的ID,可以通过setOnClickListener将其设置为灰色!
确保添加

 view.setImageResource(R.drawable.beeline_check_box_selected);
            checkType = CheckType.SELECTED;

删除所有灰色后!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM