Как построить параметризованный пользовательский макет?

Мое приложение предназначено для манипулирования и отображения различных представлений конкретной сущности. У меня есть класс под названием Item который определяет сущность в моем приложении. Я создал пользовательский макет, который знает, как визуализировать конкретную версию Items:

public class MyItemLayout extends FrameLayout {
    public MyItemLayout(Context context, AttributeSet attrs) { ... }
}

Я хотел бы иметь возможность ссылаться на это в XML:

<MyItemLayout .../>

Что я пока не понимаю, так это:

  1. Как мне ссылаться на это в XML?
  2. Как мне установить 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

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