Страницы

Поиск по вопросам

пятница, 27 декабря 2019 г.

Тулза для конвертирования layout xml в Java код

#java #android #xml #android_layout


Может кто встречал какую утилитку? Когда есть xml с layout-ом, а хочется получить
код, который в рантайме генерит такой же layout.    


Ответы

Ответ 1



А, во-вторых, по хорошему в этом layout надо корневой view делать , т.к. если задать просто LinearLayout, и наш кастомный view будет тоже наследоваться от LinearLayout, то получаем один контейнер лишний. Вы не правы, можно сделать и без лишнего вложения. Есть прекрасные приемы. Принцип похож на ViewHolder. Берем разметку xml И создаем класс, который будет выполнять роль конструктора public class MyCustomHolder { private final View mainContent; private final ImageView icon; private final TextView textView; private final TextView textView2; private CustomObject object; private final Context mContext; public MyCustomHolder(final Context context) { mContext = context; mainContent = LayoutInflater.from(context).inflate(R.layout.your_layout, null); icon = ((ImageView) mainContent.findViewById(R.id.icon)); textView = (TextView) mainContent.findViewById(R.id.name1); textView2 = (TextView) mainContent.findViewById(R.id.name2); mainContent.setTag(this); } public void setObject(final CustomObject object) { this.object = object; textView.setText(object.getName()); textView2.setText(object.getSubtitle()); icon.setImageResource(R.drawable.icon); } public View getView() { return mainContent; } public CustomObject getObject() { return object; } } Использовать становится совсем просто. MyCustomHolder holder = new MyCustomHolder(context); holder.setObject(myObject); //наполняем данными View myView = holder.getView();//получаем нужный View ((MyCustomHolder)myView.getTag())//достаем holder для изменения View Такой прием гораздо удобней, нежели сгенерить огромное полотно кода. К тому же, не все можно сделать легко в коде, что позволяет разметка в xml.

Комментариев нет:

Отправить комментарий