Как построить параметризованный пользовательский макет? - PullRequest
1 голос
/ 13 апреля 2011

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

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

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

<MyItemLayout .../>

Я пока не понимаю:

  1. Как мне ссылаться на это в XML?
  2. Как установить экземпляр Item для элемента? Я не могу сделать это в XML (или я могу?), Так как бы я сделал это в коде?

Спасибо.

1 Ответ

1 голос
/ 13 апреля 2011

Один из способов ссылки на пользовательский компонент (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

...