У меня есть recylerview в моем приложении, которое содержит два текстовых изображения, один - rankTextView, а другой - имяTextview. Что-то вроде этого;
Что я хочу сделать, так это сортировать этот recylerview, во-первых, в порядке наименьшего номера, и если есть два одинаковых номера, я хочу, чтобы он был отсортирован по строкам. В приведенном выше скриншоте я имею, например, два человека, рейтинг 1, во-первых, я хочу, чтобы recylerview помещал их в начало, а затем сортировал их по String.
Я искал онлайн, чтобы посмотреть, как я могу это сделать, но будучи новичком в android, я не смог поиграть/адаптировать результаты в свой проект. Например:
Как отсортировать строки в Android RecyclerView?
Что такое SortedList <T> работа с RecyclerView.Adapter?
Я создал пользовательский адаптер, содержащий текстовое представление, называемое rankTextview, и другое текстовое представление, называемое nameTextview, например:
rankTextview = (TextView) itemView.findViewById(R.id.ranktextview);
nameTextview = (TextView) itemView.findViewById(R.id.nametextview);
то у меня есть метод, который принимает какое значение для ввода в это текстовое представление как параметр, например:
public addPerson(String rankTextview, String personTextview,) {
this.rankTextview = rankTextview;
this.personTextview = personTextview;
}
а затем я вызываю этот метод в своем основном классе для добавления данных, например:
person.add(new addPerson
("1\nrank", "James Kub"));
person.add(new addPerson
("2\nrank", "Peter Hanly"));
person.add(new addPerson
("3\nrank", "Josh Penny"));
person.add(new addPerson
("1\nrank", "Danny Jackson"));
person.add(new addPerson
("3\nrank", "Brad Black"));
Теперь то, что я хочу сделать, это отсортировать эти данные сначала по порядку наименьшего номера рангов, например, 1, 2,3... и если есть два одинаковых числа, тогда я хочу отсортировать по имени в алфавитном порядке. Кроме того, в будущем мое приложение будет содержать очки вместо рангов, которые будут такими десятичными числами, как это. 1.1, 1.5, 1.1, 2.1, 2.5 и т.д., Поэтому можно было бы считать число десятичных чисел при сортировке по рангу.
Спасибо заранее, и, пожалуйста, дайте мне знать, если мой вопрос недостаточно ясен. Кроме того, поскольку у меня было так много строк кода, я не был уверен, какой раздел предоставить и который не предоставлять, пожалуйста, сообщите мне, есть ли какой-либо код, который у меня отсутствует, который я должен был включить.
Редакция:
public void animateTo(List<ExampleModel> models) {
applyAndAnimateRemovals(models);
applyAndAnimateAdditions(models);
applyAndAnimateMovedItems(models);
}
private void applyAndAnimateRemovals(List<ExampleModel> newModels) {
for (int i = mModels.size() - 1; i >= 0; i--) {
final ExampleModel model = mModels.get(i);
if (!newModels.contains(model)) {
removeItem(i);
}
}
}
private void applyAndAnimateAdditions(List<ExampleModel> newModels) {
for (int i = 0, count = newModels.size(); i < count; i++) {
final ExampleModel model = newModels.get(i);
if (!mModels.contains(model)) { // error here, saying cannot resolve method contains
addItem(i, model);
}
}
}
private void applyAndAnimateMovedItems(List<ExampleModel> newModels) {
for (int toPosition = newModels.size() - 1; toPosition >= 0; toPosition--) {
final ExampleModel model = newModels.get(toPosition);
final int fromPosition = mModels.indexOf(model);
if (fromPosition >= 0 && fromPosition != toPosition) {
moveItem(fromPosition, toPosition);
}
}
}
public ExampleModel removeItem(int position) {
final ExampleModel model = mModels.remove(position); // Error here, saying in sortedlist cannot be applied to (int)
notifyItemRemoved(position);
return model;
}
public void addItem(int position, ExampleModel model) {
mModels.add(position, model); // Error here, saying add has private access in 'android.support.v7.util.SortedList'
notifyItemInserted(position);
}
public void moveItem(int fromPosition, int toPosition) {
final ExampleModel model = mModels.remove(fromPosition); // Error here, saying in sortedlist cannot be applied to (int)
mModels.add(toPosition, model); // Error here, saying add has private access in 'android.support.v7.util.SortedList'
notifyItemMoved(fromPosition, toPosition);
}