Как построить параметризованный пользовательский макет?
Мое приложение предназначено для манипулирования и отображения различных представлений конкретной сущности. У меня есть класс под названием Item
который определяет сущность в моем приложении. Я создал пользовательский макет, который знает, как визуализировать конкретную версию Item
s:
public class MyItemLayout extends FrameLayout {
public MyItemLayout(Context context, AttributeSet attrs) { ... }
}
Я хотел бы иметь возможность ссылаться на это в XML:
<MyItemLayout .../>
Что я пока не понимаю, так это:
- Как мне ссылаться на это в XML?
- Как мне установить
Item
экземпляр для элемента? Я не могу сделать это в XML (или я могу?), Так как бы я сделал это в коде?
Благодарю.
1 ответ
Один из способов ссылки на пользовательский компонент (View или ViewGroup) состоит в том, чтобы иметь полное имя пакета, например <com.foo.bar.MyItemLayout>
Одной из возможностей передачи данных из декларации в XML является использование AttributeSet
в конструкторе. Если вы установите атрибут в XML, вы можете получить его, используя методы из этого класса (getFloatValue()
например).
Итак: шаг 1: сделать что-то вроде <com.foo.bar.MyItemLayout item="xxxx"></com.foo.bar.MyItemLayout>
Шаг 2: В MyItemLayout
вызов конструктора attrs.getFloatValue()
(или любой другой тип, который вы хотите), чтобы получить данные
Надеюсь, это помогло JQCorreia