Порядок обратного списка в массиве

Как мне изменить этот код, чтобы он добавлял каждый новый объект в верхнюю часть списка вместо нижней? Я хотел бы, чтобы последний объект был добавлен в самую верхнюю часть списка, чтобы вы видели более старые объекты, когда вы прокручиваете нижнюю часть списка.

public class StatusAdapter extends ArrayAdapter { protected Context mContext; protected List<ParseObject> mStatus; public StatusAdapter(Context context, List<ParseObject> status) { super(context, R.layout.homepage, status); mContext = context; mStatus = status; } @Override public View getView(final int position, View convertView, ViewGroup parent) { ViewHolder holder; if (convertView == null) { convertView = LayoutInflater.from(mContext).inflate( R.layout.homepage, null); holder = new ViewHolder(); holder.usernameHomepage = (TextView) convertView .findViewById(R.id.usernameHP); holder.statusHomepage = (TextView) convertView .findViewById(R.id.statusHP); convertView.setTag(holder); } else { holder = (ViewHolder) convertView.getTag(); } ParseObject statusObject = (ParseObject)mStatus.get(position); // title String username = statusObject.getString("newUser") + ":"; holder.usernameHomepage.setText(username); // content String status = statusObject.getString("newStatus"); holder.statusHomepage.setText(status); return convertView; } public static class ViewHolder { TextView usernameHomepage; TextView statusHomepage; } } 

Если вы хотите отображать список в обратном порядке, новейший элемент сверху, то просто отмените свой список. Класс коллекции java предоставляет обратный метод, который отменяет все элементы в списке. См. Ниже код –

Collections.reverse(aList);

Вышеуказанный элемент обратного списка кода и результат сохранения в том же списке.

Надеюсь, это поможет вам.

Каждая конкретная реализация интерфейса List определяет void add(int index, E element)

Вставляет указанный элемент в указанную позицию в этом списке (дополнительная операция). Сдвигает элемент в данный момент (если есть) и любые последующие элементы справа (добавляет один к их индексам).

Таким образом, вы можете add(0,item) а затем уведомить, что ваш набор данных изменился. Это приведет к тому, что ваш новый элемент появится сверху, а не внизу.

Вы можете отсортировать список, который вы передаете адаптеру, в том же порядке, в котором хотите видеть элементы в списке.

 public static void sort (List<T> list, Comparator<? super T> comparator) 

ссылка

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

 private List<ParseObject> reverseListOrder(List<ParseObject> status) { Iterator<ParseObject> it = status.iterator(); List<ParseObject> destination = new ArrayList<>(); while (it.hasNext()) { destination.add(0, it.next()); it.remove(); } return destination; } 

И не нужно ничего менять в вашем классе StatusAdapter, вызывать функцию выше, когда вы инициализируете StatusAdapter.

Применение:

 StatusAdapter adapter = new StatusAdapter(this, R.layout.item, reverseListOrder(listOfStatus)); listView.setAdapter(adapter);