2017-01-27 12 views
5

Proteusというアンドロイドライブラリを使用しています。このライブラリは、私たちがサーバー上に置いているJSONファイルで実行時にレイアウトを膨張させます。このライブラリはデータバインディングを可能にするが、私の質問は、私のアプリを使用している間、どのようにこれらのフィールドからデータを取得できますか?コンパイル時に存在しないため、レイアウトの識別子を参照することはできません。 (R.id.input)は、実際にランタイム?:実行時に利用可能なTextFieldのリストを取得しますか?

View view = inflater.infalte(R.layout.fragment_form, container, false); 
TextView textView = (TextView)view.findViewById(R.id.input); 

または可能性をプログラムするまで存在しない場合、実行時に使用可能なすべての一意の識別子のリストを取得する文でエラーを無視する方法はありますか?すべての情報が参考になります。ありがとうございました。

答えて

2

proteusは、Android XMLレイアウトのコンパイル時に生成されたintのIDとは異なり、実行時にビューIDを生成します。 Androidとは異なり、プロテウスによって作成されたビューのIDはStringに基づいており、R.id.<something>は機能しません。

プロテウスは、String idでビューを見つけるユーティリティメソッドを提供します。

レイアウト:

{ 
    "type": "TextView", 
    "id": "myId" 
} 

のJava:

View view = proteusView.getViewManager().findViewById("myId"); // can be null 

返されるビューにもより多くの情報のためthe wikiを参照してくださいProteusView

することができます。

ウィキは少し古いです。上記の回答は5.0.0-rc11リリース以上です。 Wikiはすぐに更新する必要があります。

関連する問題