Как мне изменить этот код, чтобы он добавлял каждый новый объект в верхнюю часть списка вместо нижней? Я хотел бы, чтобы последний объект был добавлен в самую верхнюю часть списка, чтобы вы видели более старые объекты, когда вы прокручиваете нижнюю часть списка.
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);