如何按最低数字对回收者视图进行排序 / 字符串 Android Studio
我的应用程序中有一个回收器视图,其中包含两个文本视图,一个是rankTextView,另一个是nameTextview。像这样的东西;
我想做的是按最低数量顺序对这个回收商视图进行排序,如果有两个相同的数字,那么我希望它按字符串排序。例如,在上面的屏幕截图中,两个人排名1,首先我希望回收者视图将这些放在顶部,然后按字符串进行排序。
我已经在网上搜索过,看看我该如何做到这一点,但作为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);
}