プラグインの開発に Justinmind の API を使用しています。私が必要とするのは、基本的に ID で要素を見つけることです。ただし、API にはfindById()のようなメソッドがないようです。ここでドキュメント全体を検索し ました。メソッドを作成する必要があると思います。Justinmind に固有の問題ではありませんが、ここでは Justinmind の問題の詳細と一般的な構造について説明します。
次のページ レイアウトがあるとします。
次の階層のように、Justinmind でこのページを設計します。
Screen
----Image
----Group
--------Button
------------Image
------------Label
--------Button
------------Image
------------Label
--------Button
------------Image
------------Label
--------Button
------------Image
------------Label
--------Button
------------Image
------------Label
--------Button
------------Image
------------Label
----Text
----Text
----Text
Justinmind API では、画面はICanvasオブジェクトです。画面をmyScreen変数に保存します。次に、getApiRoot()は、ページの最上位のコンポーネントを返します。その後、すべてのコンポーネントは子であり、getApiChildren()メソッドを介してアクセスできます。
List<IComponent> components = myScreen.getApiRoot().getApiChildren();
上記のコードは、Image、Group、Texts、つまり一次階層コンポーネントを返します。たとえば、次のように最初のボタンのラベル(OVERVIEW)にアクセスできます。
IComponent group = components.get(1); //Returns the Group
IComponent button1 = group.getApiChildren().get(0); //Returns the first button group, which is the first child of group
IComponent label1 = button1.getApiChildren().get(1); //Returns the label, which is the second child of the first button group
ご覧のとおり、私は常にgetApiChildren()メソッドでコンポーネントにアクセスしています。そして、これは大規模で動的なページではあまり実現できません。たとえば、私が書いているプラグインは、ボタン グループにラベルがない場合にアラートを出すためです。ラベルの存在を確認するには、画面のすべてのコンポーネントをgetApiChildren()メソッドでトラバースする必要があります。
ツリーで表すことができます:
ただし、この構造は常に変化します。ツリーまたはハッシュマップを構築する必要がありますか? 非常に複雑なオブジェクト内のオブジェクトを見つけるための最良の方法は何ですか?