2017-01-27 10 views
5

Я использую андроидную библиотеку под названием Proteus, которая раздувает макеты во время работы с файлом JSON, который мы сидим на нашем сервере. Эта библиотека позволяет привязывать данные, но мой вопрос заключается в том, как я могу получить данные из этих полей при использовании моего приложения? Я не могу ссылаться ни на один из идентификаторов макета, потому что они не существуют во время компиляции. Есть ли способ игнорировать ошибки в заявлении, когда (R.id.input) не на самом деле не существует до выполнения ?:Получите список текстовых полей, доступных во время выполнения?

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

Или, возможно, программно получить список всех доступных уникальных идентификаторов во время выполнения? Любая информация будет полезна. Спасибо.

ответ

2

proteus генерирует идентификаторы просмотра во время выполнения, в отличие от идентификаторов int, сгенерированных во время компиляции для макетов Android XML. В отличие от Android идентификаторы просмотров, созданных protus, основаны на String, а R.id.<something> не будет работать.

Proteus предоставляет утилиты для поиска вида String id.

Планировка:

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

Java:

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

Возвращенный вид также может быть ProteusView

Пожалуйста, обратитесь к the wiki для получения дополнительной информации.

Вики немного устарели, ответ выше для 5.0.0-rc11 выпуск и выше. Вики должна быть обновлена ​​в ближайшее время.