private static @Nullable Unbinder parseOnClick(final Object target, final Method method, View source) { OnClick onClick = method.getAnnotation(OnClick.class); if (onClick == null) { return null; } validateMember(method); validateReturnType(method, void.class); final ArgumentTransformer argumentTransformer = createArgumentTransformer(method, ON_CLICK_TYPES); List<View> views = findViews(source, onClick.value(), isRequired(method), method.getName(), View.class); ViewCollections.set(views, ON_CLICK, v -> tryInvoke(method, target, argumentTransformer.transform(v))); return new ListenerUnbinder<>(views, ON_CLICK); }
private static @Nullable Unbinder parseOnFocusChange(final Object target, final Method method, View source) { OnFocusChange onFocusChange = method.getAnnotation(OnFocusChange.class); if (onFocusChange == null) { return null; } validateMember(method); validateReturnType(method, void.class); final ArgumentTransformer argumentTransformer = createArgumentTransformer(method, ON_FOCUS_CHANGE_TYPES); List<View> views = findViews(source, onFocusChange.value(), isRequired(method), method.getName(), View.class); ViewCollections.set(views, ON_FOCUS_CHANGE, (v, hasFocus) -> tryInvoke(method, target, argumentTransformer.transform(v, hasFocus))); return new ListenerUnbinder<>(views, ON_FOCUS_CHANGE); }
private static @Nullable Unbinder parseOnCheckedChanged(final Object target, final Method method, View source) { OnCheckedChanged onCheckedChanged = method.getAnnotation(OnCheckedChanged.class); if (onCheckedChanged == null) { return null; } validateMember(method); validateReturnType(method, void.class); final ArgumentTransformer argumentTransformer = createArgumentTransformer(method, ON_CHECKED_CHANGED_TYPES); List<CompoundButton> views = findViews(source, onCheckedChanged.value(), isRequired(method), method.getName(), CompoundButton.class); ViewCollections.set(views, ON_CHECKED_CHANGE, (buttonView, isChecked) -> tryInvoke(method, target, argumentTransformer.transform(buttonView, isChecked))); return new ListenerUnbinder<>(views, ON_CHECKED_CHANGE); }
private static @Nullable Unbinder parseOnItemClick(final Object target, final Method method, View source) { OnItemClick onItemClick = method.getAnnotation(OnItemClick.class); if (onItemClick == null) { return null; } validateMember(method); validateReturnType(method, void.class); final ArgumentTransformer argumentTransformer = createArgumentTransformer(method, ON_ITEM_CLICK_TYPES); List<AdapterView<?>> views = findViews(source, onItemClick.value(), isRequired(method), method.getName(), AdapterView.class); ViewCollections.set(views, ON_ITEM_CLICK, (parent, view, position, id) -> tryInvoke(method, target, argumentTransformer.transform(parent, view, position, id))); return new ListenerUnbinder<>(views, ON_ITEM_CLICK); }
private static @Nullable Unbinder parseOnEditorAction(final Object target, final Method method, View source) { OnEditorAction onEditorAction = method.getAnnotation(OnEditorAction.class); if (onEditorAction == null) { return null; } validateMember(method); final boolean propagateReturn = validateReturnType(method, boolean.class); final ArgumentTransformer argumentTransformer = createArgumentTransformer(method, ON_EDITOR_ACTION_TYPES); List<TextView> views = findViews(source, onEditorAction.value(), isRequired(method), method.getName(), TextView.class); ViewCollections.set(views, ON_EDITOR_ACTION, (v, actionId, event) -> { Object value = tryInvoke(method, target, argumentTransformer.transform(v, actionId, event)); //noinspection SimplifiableConditionalExpression return propagateReturn ? (boolean) value : false; }); return new ListenerUnbinder<>(views, ON_EDITOR_ACTION); }
private static @Nullable Unbinder parseOnTouch(final Object target, final Method method, View source) { OnTouch onTouch = method.getAnnotation(OnTouch.class); if (onTouch == null) { return null; } validateMember(method); final boolean propagateReturn = validateReturnType(method, boolean.class); final ArgumentTransformer argumentTransformer = createArgumentTransformer(method, ON_TOUCH_TYPES); List<View> views = findViews(source, onTouch.value(), isRequired(method), method.getName(), View.class); ViewCollections.set(views, ON_TOUCH, (v, event) -> { Object returnValue = tryInvoke(method, target, argumentTransformer.transform(v)); //noinspection SimplifiableConditionalExpression return propagateReturn ? (boolean) returnValue : false; }); return new ListenerUnbinder<>(views, ON_TOUCH); }
private static @Nullable Unbinder parseOnLongClick(final Object target, final Method method, View source) { OnLongClick onLongClick = method.getAnnotation(OnLongClick.class); if (onLongClick == null) { return null; } validateMember(method); final boolean propagateReturn = validateReturnType(method, boolean.class); final ArgumentTransformer argumentTransformer = createArgumentTransformer(method, ON_LONG_CLICK_TYPES); List<View> views = findViews(source, onLongClick.value(), isRequired(method), method.getName(), View.class); ViewCollections.set(views, ON_LONG_CLICK, v -> { Object returnValue = tryInvoke(method, target, argumentTransformer.transform(v)); //noinspection SimplifiableConditionalExpression return propagateReturn ? (boolean) returnValue : false; }); return new ListenerUnbinder<>(views, ON_LONG_CLICK); }
private static @Nullable Unbinder parseOnItemLongClick(final Object target, final Method method, View source) { OnItemLongClick onItemLongClick = method.getAnnotation(OnItemLongClick.class); if (onItemLongClick == null) { return null; } validateMember(method); final boolean propagateReturn = validateReturnType(method, boolean.class); final ArgumentTransformer argumentTransformer = createArgumentTransformer(method, ON_ITEM_LONG_CLICK_TYPES); List<AdapterView<?>> views = findViews(source, onItemLongClick.value(), isRequired(method), method.getName(), AdapterView.class); ViewCollections.set(views, ON_ITEM_LONG_CLICK, (parent, view, position, id) -> { Object value = tryInvoke(method, target, argumentTransformer.transform(parent, view, position, id)); //noinspection SimplifiableConditionalExpression return propagateReturn ? (boolean) value : false; }); return new ListenerUnbinder<>(views, ON_ITEM_LONG_CLICK); }