我有一个像下面这样的ArrayList(studentName,Marks1,Marks2) 下面的代码是我整个代码的一部分,所以请不要混淆自己。我试着尽可能地让你清楚。
请记住,每次点击后它都会退出该功能。
@Override
public void onClick(View v) {
ArrayList<allStudents> Student = new ArrayList(allStudents );
allStudents.add(new Student("A", 80, 94));
allStudents.add(new Student("B", 98, 91));
allStudents.add(new Student("F", 70, 84));
allStudents.add(new Student("C", 98, 92));
allStudents.add(new Student("H", 99, 93));
Collections.Student, new Comparator<allStudents>() {
@Override
public int compare(allStudents lhs, allStudents rhs) {
return (rhs.getMakrs1() - lhs.getMakrs2());
}
});
}
问题1.如何设置按钮点击事件;所以,当我只点击一个按钮时,它会读取第一个顶部,然后在下一次点击它将读取第二个顶部,然后在第三个点击它读取第三个顶部,依此类推? 当所有数值完成读数时,它将到Q2(下面),然后再从Q1开始? 问题2.我如何排序/比较并获得H,然后是第二顶上的C然后是第三顶上的B,依此类推?
答案 0 :(得分:0)
int counter = 0;
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Student stud = allStudents.get(counter);//this gives you the position you want
counter++; // in next click get another element
if(counter>allStudents.size()){
counter = 0;//reset counter
//for sorting elements use Collections.sort() method
// as for the q2 part please try Collections.sort() reverse order
}
}
});
用于排序Collections.sort()的逆序。样本可以这样做:
// create comparator for reverse order
Comparator cmp = Collections.reverseOrder();
// note that I used reverseOrder because your data seemed to be best dealt this way.
// sort the list
Collections.sort(allStudents, cmp);
答案 1 :(得分:0)
使用计数器变量来跟踪ArrayList
中的位置。一旦你提取了所有学生,比较它们就是一个简单的问题,即访问第二个属性(或者你想要比较它们的任何属性,但似乎就像它那样){{1}并比较和重新排列它们。
如果您打算将它们插入到新的Student.2property
中,那么使用临时变量(ArrayList
)跟踪哪一个是最大的并且使您拥有最大的变量也可能会有所帮助左