![](/img/trans.png)
[英]How to retrieve data from Image Adapter when a particular item is clicked in a grid view and pass it to another activity?
[英]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.