Есть ли способ программной сортировки линейных макетов в Android Studio? - PullRequest
0 голосов
/ 03 октября 2018

У меня есть приложение для создания заметок для Android, где LinearLayout «карта заметок» раздувается для каждой сохраненной заметки, которую имеет пользователь.Родитель этого - LinearLayout внутри ScrollLayout (это был единственный способ заставить его работать).Эти карты состоят из заголовка, тела, тега местоположения и времени создания.

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

Я смотрел на Список просмотров , чтобы увидеть, если это лучший родитель, но я все еще не могу сказать, смогу ли я отсортировать макеты вListView.

Ответы [ 2 ]

0 голосов
/ 03 октября 2018

Если вы хотите LayoutInflater.Допустим, ваш пример XML находится в файле custom_layout.xml:

LayoutInflater inflater = LayoutInflater.from (context);RelativeLayout layout = (RelativeLayout) inflater.inflate (R.layout.custom_layout, null, false);

LinearLayout linear = (LinearLayout) findViewById (R.id.myLayout);linear.addView (layout);

посмотрите на Droid: Как программно переупорядочить содержимое linearlayouts?и получить все дочерние представления внутри LinearLayout одновременно

0 голосов
/ 03 октября 2018

Я рекомендую использовать RecyclerView.Вам потребуется настроить адаптер для него, но проще управлять несколькими элементами (вы можете изменить их порядок, добавить операции смахивания или удержания и т. Д.).Вы также можете сортировать элементы с помощью чего-то вроде TreeSet.

Возможно, вам понадобится класс данных для ваших заметок, поэтому что-то вроде этого:

class NoteData implements Comparable {
    public String title;
    public String text;
    public long timeInMs;
    //etc

    @Override
    public int compareTo(NoteData other) {
        return title.compareTo(other.title);
    }

}

Затем в вашем RecyclerView Adapter,Вы можете иметь TreeSet объектов NoteData.TreeSet автоматически заказывает ваши товары, используя интерфейс Comparable, если он доступен (вот почему я реализовал его выше).TreeSet сортирует по возрастанию по умолчанию, но вы можете передать Collections.reverseOrder() в конструктор TreeSet, чтобы сделать его убывающим.

В моем примере я отсортировал по заголовку.Вы можете изменить переменную, которую вы сравниваете перед компиляцией, но то, что я сделал, не поддерживает динамическое упорядочение.Для этого вы захотите выполнить поиск в Google для примеров того, как динамически сортировать списки (для этого вы должны использовать ArrayList или Set вместо TreeSet), или библиотек, которые могут это сделать за вас.

Учебник Google RecyclerView
Другой учебник

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...