Naming ルール
UIファイルに追加したほとんどのコントロールは、コンパイル後の関連ポインタ変数とマクロIDが自動的に生成されます。
コントロールIDとポインタ変数の名前のためのNamingルール
ポインタ変数の名前は、それぞれ固定された小文字prepixm+IDの値+Ptrの三つのパートで構成されます。
IDで Textview1を持つコントロールを例に説明します。
コンパイル後に生成されるポインタ変数の名前は、mTextview1Ptrです。
ポインタ変数のclassは、コントロールによって決定されます。各コントロールに対応するポインタclassは以下の通りです。(プロジェクトのjni/ includeフォルダで、各classのヘッダファイルを見つけることができます。)
| Control name | Class name |
|---|---|
| ZKQRCode | |
| ZKEditText | |
| ZKButton | |
| ZKTextView | |
| ZKSeekBar | |
| ZKPointer | |
| ZKCircleBar | |
| ZKDigitalClock | |
| ZKVideoView | |
| ZKCameraView | |
| ZKWindow | |
| ZKListView | |
| ZKSlideWindow | |
| ZKDiagram |
コントロールIDとmacro definitionのnamingルール
このmacro definitiondは、UIファイルでコントロールのマッピング関係を示します。
Macro definitionは、固定された大文字ID、大文字UIファイル名、コントロールID propertyの値の3つの部分で構成されます。
IDをTextview1と持つコントロールの例をみましょう。
コンパイル後、生成されたmacro statementは #define ID_MAIN_TextView150001です。

[!Warning] Macro definitionの値を変更しないでください。非正常動作の原因になることがあります。
コントロールによって生成される関連関数
特定のコントロールは、関連付けられている関数を自動的に生成します。以下は、これらのコントロールによって自動的に生成された関数について説明します。
[!Note] 関数で
XXXXは、コントロールのID値です。
Button コントロール
static bool onButtonClick_XXXX(ZKButton *pButton) { return false; }ボタンがクリックされると呼び出される関数です。
- パラメータ
ZKButton* pButtonはクリックされたボタンのポインタであり、ポインタのメンバ変数を使用して、一連のoperationを行うことができます。このポインタは、グローバル変数mXXXXPtrが指すオブジェクトと同じオブジェクトのポインタです。
- パラメータ
Edit Text コントロール
static void onEditTextChanged_XXXX(const std::string &text) { }Input boxが変更されたとき、システムによって自動的に呼び出される関数です。
- パラメータ
std::string&textは、現在Input boxのcontentsです。
- パラメータ
Seek Bar コントロール
static void onProgressChanged_XXXX(ZKSeekBar *pSeekBar, int progress) { }Seek Barのプログレス値が変更されると、システムによって自動的に呼び出される関数です。
- パラメータ
ZKSeekBar* pSeekBarはSeek Barのポインタ変数であり、ポインタのメンバ変数を使用して、一連のoperationを行うことができます。 - パラメータ
int progressは、現在Seek Barのプログラス値です。
- パラメータ
Slide window コントロール
static void onSlideItemClick_XXXX(ZKSlideWindow *pSlideWindow, int index) { }Slide windowコントロールのアイコンがクリックされたとき、システムによって自動的に呼び出される関数です。
- パラメータ
ZKSlideWindow* pSlideWindowはSlide windowコントロールのポインタ変数であり、ポインタのメンバ変数を使用して、一連のoperationを行うことができます。 - パラメータ
int indexは、現在クリックされたアイコンのindex値です。たとえば、Slide windowに合計10個のアイコンを追加した場合index値の範囲は[0、9]です。
- パラメータ
List コントロール
リストコントロールは、最も複雑なコントロールで三つの関連関数を生成します。しかし、多くの関数がありますが、次の手順に従えば簡単に理解することができます。
まず、もしシステムがリストコントロールを描画たい場合、どのように多くのアイテムがあるか知る必要があります。
以下はそれに関連する関数です。static int getListItemCount_XXXX(const ZKListView *pListView) { return 0; }- パラメータ
const ZKListView* pListViewはListコントロールのポインタであり、グローバル変数mXXXXPtrと同じオブジェクトを指します。 - 戻り値は整数であり、リストにあるアイテムの数を示し、必要に応じて決定されます。
- パラメータ
システムがリストのアイテム数を知っているたが、これだけでリストを描画には不足して、各アイテムにどのようなコンテンツをピョヒすべきかも知っている。だから下の関数があります。表示するアイテムの数だけ下の関数が呼び出され、表示する内容を設定することになります。
static void obtainListItemData_XXXX(ZKListView *pListView,ZKListView::ZKListItem *pListItem, int index) { //pListItem->setText(index) }パラメータ
ZKListView* pListViewはListコントロールのポインタであり、グローバル変数mXXXXPtrと同じオブジェクトを指します。パラメータ
ZKListView:: ZKListItem* pListItemは、リストアイテムのポインタであり、UIファイルのItemに対応します。パラメータ
int indexは全体のリストからpListItemのindex値です。
例:getListItemCount_XXXX関数の戻り値が10という意味ではリストに10個のアイテムがあり、index値の範囲が[0、9]ということです。pListItemとindexを接続して、全体のリストから任意のアイテムを設定する必要があるか知ることができます。
この関数では
indexに基づいて、各アイテムに表示されるコンテンツが設定されることがあります。ボタンコントロールと同様に、リストコントロールもクリックイベントのための関数を持っており、index値に基づいて、現在どのようなアイテムがクリックされたかを判断します。
static void onListItemClick_XXXX(ZKListView *pListView, int index, int id) { //LOGD(" onListItemClick_ Listview1 !!!\n"); }リストコントロールがクリックされると、システムは、クリックされた位置に対応するアイテムのindex値を計算して、自動的にこの関数を呼び出します。
パラメータ
ZKListView* pListViewはListコントロールのポインタであり、グローバル変数mXXXXPtrと同じオブジェクトを指します。パラメータ
int indexは全体のリストコントロールで現在クリックされたアイテムのindex値です。パラメータ
int idは、現在クリックされたコントロールのIDです。このIDは、propertiesのIDと異なるので注意してください。
これに対するmacro definitionは、対応する
Activity.hファイルにあります。mainActivity.hを例に示します。
このIDは、list itemに複数のsubitemがある場合は、現在クリックされたsubitemがどんなものかを区別するために使用することができます。
例: 下の図に示すように、list itemにスイッチイメージが配置された2つのsubitemが追加されており、それぞれのproperty IDはSubItem1とSubItem2です。SubItem1がクリックされたとき、パラメータidとID_MAIN_SubItem1そしてID_MAIN_SubItem2の関係で判断されるものでいくつかのスイッチがクリックされたかを決定することができます。static void onListItemClick_XXXX(ZKListView *pListView, int index, int id) { //LOGD(" onListItemClick_ Listview1 !!!\n"); switch(id) { case ID_MAIN_SubItem1: //LOGD("Clicked the first subitem of item %d in the list", index); break; case ID_MAIN_SubItem2: //LOGD("Clicked the second subitem of item %d in the list", index); break; } }

最後に、図を用いて、それらの間のルールを要約してみましょう。

他のコントロールもこれと同じです。