Импорт java.awt.Dimension error [duplicate]

Попробуйте указать имя в ListBox и перечислите его DataContext в привязке:

   <ListBox x:Name="myList" ItemsSource="{DynamicResource MyColl}">
        <ListBox.Resources>
            <CompositeCollection x:Key="MyColl">

                 <CollectionContainer Collection="{Binding DataContext.Dogs, Source={x:Reference myList}}"/>
                <CollectionContainer Collection="{Binding DataContext.Cats, Source={x:Reference myList}}"/>
            </CompositeCollection>
        </ListBox.Resources>
    </ListBox>
6
задан martijno 1 September 2012 в 21:54
поделиться

3 ответа

Почему вам нужно злоупотреблять другими классами, а не реализовывать что-то чрезвычайно простое:

public class Dimensions {

    public int width;
    public int height;

    public Dimensions() {}

    public Dimensions(int w, int h) {
        width = w;
        height = h;
    }

    public Dimensions(Dimensions p) {
        this.width = p.width;
        this.height = p.height;
    }

    public final void set(int w, int h) {
        width = w;
        height = h;
    }

    public final void set(Dimensions d) {
        this.width = d.width;
        this.height = d.height;
    }

    public final boolean equals(int w, int h) {
        return this.width == w && this.height == h;
    }

    public final boolean equals(Object o) {
        return o instanceof Dimensions && (o == this || equals(((Dimensions)o).width, ((Dimensions)o).height));
    }

}
0
ответ дан Leo 19 August 2018 в 16:38
поделиться
  • 1
    Поскольку большинство программистов, как правило, забывают реализовать hashCode() и Parcelable и в конечном итоге тратят драгоценное время на такие банальности, когда они могли просто использовать Point, предоставленные прекрасным API Android, и перешли к более насущным вопросам;) – Stephan Henningsen 25 January 2017 в 00:01

Вы можете использовать Pair<Integer, Integer> , который является общим классом кортежей Android. (Однако вам нужно будет заменить getWidth() и getHeight() на first и second.) В других местах Android API команда Android, похоже, использует для этого специальные классы, например Camera.Size .

1
ответ дан martijno 19 August 2018 в 16:38
поделиться
  • 1
    Пара & lt; Целое число, Целое & gt; будет иметь 2 дополнительных "новых" для целостного бокса, который в конечном итоге должен быть собран в мусор. Например. если вы используете Dimensions в коде макета и имеете много просмотров, это лишняя дополнительная нагрузка на gc (). Вместо этого вы можете реализовать держатель Dimensions с атомными типами и иметь элемент данных View, удерживающий его на протяжении всего времени просмотра, и использовать его, например. алгоритмы компоновки без каких-либо боксирования / распаковки и сбора мусора. Точно так же основные представления Android используют временное хранилище Rect [F], чтобы избежать распределения. Добавленное преимущество JIT может встроить окончательные методы - более быстрый код – Leo 11 June 2014 в 22:46

Вы можете выбрать один из следующих вариантов:

  1. android.util.Size (с API 21). Он имеет getWidth() и getHeight(), но он неизменен, а значит, после его создания вы не можете его изменить.
  2. android.graphics.Rect. Он имеет getWidth() и getHeight(), но они основаны на внутренних left, top, right, bottom и могут казаться раздутыми со всеми его дополнительными переменными и полезными методами.
  3. android.graphics.Point, который является обычным контейнером, но имя неправильное, и его основные члены называются x и y, что не идеально подходит для калибровки. Тем не менее, это кажется классом для использования / злоупотребления при получении ширины и высоты отображения из самой рамки Android, как показано здесь:
    Display display = getWindowManager().getDefaultDisplay();
    Point size = new Point();
    display.getSize(size);
    int width = size.x;
    int height = size.y;
    
7
ответ дан Stephan Henningsen 19 August 2018 в 16:38
поделиться
Другие вопросы по тегам:

Похожие вопросы: