Получить список текстовых полей, доступных во время выполнения?
Я использую библиотеку Android под названием Proteus, которая раздувает макеты во время выполнения с помощью файла JSON, который мы храним на нашем сервере. Эта библиотека позволяет связывать данные, но мой вопрос: как я могу получить данные из этих полей при использовании моего приложения? Я не могу сослаться ни на один из идентификаторов макета, потому что они не существуют во время компиляции. Есть ли способ игнорировать ошибку в операторе, когда (R.id.input) фактически не существует до времени выполнения?:
View view = inflater.infalte(R.layout.fragment_form, container, false);
TextView textView = (TextView)view.findViewById(R.id.input);
Или, возможно, программно получить список всех доступных уникальных идентификаторов во время выполнения? Любая информация будет полезна. Спасибо.
1 ответ
Протеус генерирует идентификаторы во время выполнения, в отличие от int
идентификаторы, созданные во время компиляции для макетов Android XML. В отличие от Android, идентификаторы просмотров, созданные Proteus, основаны на String
и R.id.<something>
не будет работать.
Proteus предоставляет полезные методы, чтобы найти представление по String
Я бы.
Планировка:
{
"type": "TextView",
"id": "myId"
}
Джава:
View view = proteusView.getViewManager().findViewById("myId"); // can be null
Возвращенный вид также может быть ProteusView
Пожалуйста, обратитесь к вики для получения дополнительной информации.
Вики немного устарела, ответ выше для
5.0.0-rc11
выпуск и выше. Вики должна быть обновлена в ближайшее время.