Android中include中双向绑定监听事件

DataBing 下include的双向绑定

先看下ViewModel中的监听回调函数

 public BindingCommand onPositionClick =new BindingCommand(new BindingAction() {
        @Override
        public void call() {
            ToastUtils.showShort("点击了地图");
        }
    });

main.xml中的实现

 <data>
        <variable
            name="viewModel"
            type="com.yc.sendfood.ui.home.HomeFragmentViewModel" />
 </data>
 ......
 <include android:id="@+id/include"
            layout="@layout/custom_titlebar_home"
            binding:onShopCarClick="@{viewModel.onShopCarClick}"
            binding:onSearchClick="@{viewModel.onSearchClick}"
            binding:onPositionClick="@{viewModel.onPositionClick}"/>

在include下的引用

 <variable
            name="onPositionClick"
            type="me.goldze.mvvmhabit.binding.command.BindingCommand" />

include下的使用

  <ImageView
                    android:layout_width="0dp"
                    android:layout_height="wrap_content"
                    android:layout_weight="1"
                    binding:onClickCommand="@{onPositionClick}"
                    android:src="@mipmap/ic_home_position" />

特别声明:BindingCommand类是封装的命令回调函数,用于ViewModel与xml之间的数据绑定 详细可以参考开源的MvvmHabit项目。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在 C 语言,可以使用 WinAPI 来创建 Windows 程序的用户界面,包括按钮(Button)控件。要为按钮控件绑定事件,可以在 `WM_COMMAND` 消息处理按钮的点击事件。 下面是一个示例代码,演示如何为按钮控件绑定事件: ```c #include <windows.h> // 按钮控件的 ID #define ID_BUTTON 1 // 窗口过程函数 LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) { switch (message) { case WM_CREATE: { // 创建按钮控件 HWND hButton = CreateWindow( L"BUTTON", // 类名 L"按钮", // 标题 WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON, // 样式 10, 10, 100, 30, // 位置和大小 hWnd, // 父窗口句柄 (HMENU)ID_BUTTON, // 控件 ID NULL, NULL); // 实例句柄和创建参数 if (!hButton) { MessageBox(NULL, L"创建按钮失败", L"错误", MB_ICONERROR); } break; } case WM_COMMAND: { switch (LOWORD(wParam)) { case ID_BUTTON: // 处理按钮的点击事件 MessageBox(NULL, L"你点击了按钮", L"提示", MB_ICONINFORMATION); break; } break; } case WM_DESTROY: PostQuitMessage(0); break; default: return DefWindowProc(hWnd, message, wParam, lParam); } return 0; } int WINAPI wWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPWSTR lpCmdLine, int nCmdShow) { // 注册窗口类 WNDCLASS wc = {0}; wc.lpfnWndProc = WndProc; wc.hInstance = hInstance; wc.hCursor = LoadCursor(NULL, IDC_ARROW); wc.hbrBackground = (HBRUSH)(COLOR_WINDOW + 1); wc.lpszClassName = L"MyWindowClass"; RegisterClass(&wc); // 创建窗口 HWND hWnd = CreateWindow( L"MyWindowClass", // 类名 L"我的窗口", // 标题 WS_OVERLAPPEDWINDOW, // 样式 CW_USEDEFAULT, CW_USEDEFAULT, 400, 300, // 位置和大小 NULL, NULL, hInstance, NULL); // 父窗口句柄、菜单句柄、实例句柄和创建参数 if (!hWnd) { MessageBox(NULL, L"创建窗口失败", L"错误", MB_ICONERROR); return 1; } // 显示窗口 ShowWindow(hWnd, nCmdShow); UpdateWindow(hWnd); // 消息循环 MSG msg = {0}; while (GetMessage(&msg, NULL, 0, 0)) { TranslateMessage(&msg); DispatchMessage(&msg); } return (int)msg.wParam; } ``` 在上面的代码,我们在 `WM_CREATE` 消息创建了一个按钮控件,并设置了其位置、大小、样式等属性,然后将其添加到窗口。在 `WM_COMMAND` 消息处理按钮的点击事件,当点击按钮时弹出一个消息框提示。在程序运行时,通过消息循环来处理各种消息,并在窗口关闭时退出程序。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值