控件自动生成的关联函数讲解

有些控件会自动生成关联函数。这些控件生成的关联函数的具体讲解如下:

[!Note] 函数中出现的XXXX代表控件ID,实际过程中,请自行替换


  • 按键控件

     static bool onButtonClick_XXXX(ZKButton *pButton) {
        return false;
     }
    

    当点击按键时,会调用该函数。

    • 参数ZKButton *pButton是被点击按键的指针,通过该指针的成员函数可以对控件进行一系列操作。 该指针与全局变量mXXXXPtr所指向的对象为同一对象。

  • 编辑输入框控件

    static void onEditTextChanged_XXXX(const std::string &text) {
    
    }
    

    当输入框中的文字发生改变时,系统会自动调用该函数。

    • 参数std::string &text是当前输入框中的完整字符串。

  • 滑块控件

    static void onProgressChanged_XXXX(ZKSeekBar *pSeekBar, int progress) {
    
    }
    

    当滑块当前进度值发生变化时,系统会自动调用该函数。

    • 参数ZKSeekBar *pSeekBar 是该滑块控件的指针,通过该指针的成员函数可以对控件进行一系列操作。
    • 参数int progress是当前滑块的的进度值

  • 滑动窗口控件

    static void onSlideItemClick_XXXX(ZKSlideWindow *pSlideWindow, int index) {
    
    }
    

    当点击滑动窗口控件中的某一个图标时,系统会自动调用该函数。

    • 参数ZKSlideWindow *pSlideWindow 是该滑动窗口控件的指针,通过该指针的成员函数可以对控件进行一系列操作。
    • 参数int index是当前被点击图标的索引值。例如该滑动窗口一共添加了10个图标,则索引值范围是[0, 9]

  • 列表控件

    列表控件是最复杂的一个控件,它会创建三个关联函数。虽然函数较多,但是按照下面的步骤理解起来也十分容易。

    1. 首先,系统想要绘制一个列表控件,需要知道它一共有多少项。于是有了下面这个关联函数

       static int getListItemCount_XXXX(const ZKListView *pListView) {
             return 0;
       }
      
      • 参数const ZKListView *pListView 是该列表控件的指针, 它与全局变量mXXXXPtr指向同一个对象。
      • 返回值是整形, 表示该列表一共有多少项,可以根据你的需求来定义。
    2. 系统知道了需要绘制的数目后,还不够,还需要知道你每一项都分别显示哪些内容。于是有了下面这个函数,它会被多次调用,让你设置每一项的显示内容,直到每一项都处理完毕。

      void obtainListItemData_XXXX(ZKListView *pListView, ZKListView::ZKListItem *pListItem, int index) {
       //pListItem->setText(index)
      }
      
      • 参数ZKListView *pListView 是该列表控件的指针, 它与全局变量mXXXXPtr指向同一个对象。
      • 参数ZKListView::ZKListItem *pListItem 是列表项的指针,与UI文件中的Item对应
      • 参数int indexpListItem在整个列表中的索引值。它具有一定范围,例如:getListItemCount_XXXX函数返回值为10,则表示列表共有10项,那么index的范围是[0, 9], 结合pListItemindex,你就能知道现在设置的这个列表项处于整个列表的什么位置。

        在这个函数里,你可以根据index分别设置每一项的显示内容。
        例如: 函数中注释的语句就表示:每一个列表项将它对应的索引号作为文字显示。

    3. 与按键控件类似,列表控件同样有点击事件,只不过它是根据索引值来判断当前点击的是哪一个列表项。

      static void onListItemClick_XXXX(ZKListView *pListView, int index, int id) {
         //LOGD(" onListItemClick_ Listview1  !!!\n");
      }
      

      当点击列表控件时,系统会根据触摸的坐标,判断触点落在哪一个列表项上,计算出该列表项的索引号后,系统会自动调用该函数。

      • 参数ZKListView *pListView 是该列表控件的指针, 它与全局变量mXXXXPtr指向同一个对象。
      • 参数int index 是当前被点击的列表项在整个列表控件中的索引值
      • 参数int id 是当前被点击的控件的整形id。注意,这个id与属性表中的ID名称不同。 它的具体宏定义在相应的Activity.h文件中。 例如mainActivity.h

        ID宏定义
        这个id参数的作用在于,当列表项中有多个子项时,可以用来区分当前被点击的是哪一个子项。
        例如: 如下图,我在列表项中添加了两个列表子项,并添加了图片装饰,作为开关按钮,属性ID名分别为SubItem1SubItem2,当我点击SubItem1时,通过判断参数idID_MAIN_SubItem1ID_MAIN_SubItem2的相等关系,就能确定点击的是哪一个开关。
        具体代码:

        static void onListItemClick_XXXX(ZKListView *pListView, int index, int id) {
         //LOGD(" onListItemClick_ Listview1  !!!\n");
         switch(id) {
         case ID_MAIN_SubItem1:
             //LOGD("点击了列表第%d项的第一个子项", index);
             break;
         case ID_MAIN_SubItem2:
             //LOGD("点击了列表第%d项的第二个子项", index);
             break;
         }
        }
        

        列表outline 列表子项示例


[!Note]

技巧之:快速跳转至关联函数

powered by Gitbooklast modified: 2021-05-28 12:00:31

results matching ""

    No results matching ""