Получить список текстовых полей, доступных во время выполнения?

Я использую библиотеку 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 выпуск и выше. Вики должна быть обновлена ​​в ближайшее время.

Другие вопросы по тегам