仅在单击android按钮时逐个读取arraylist对象值

时间:2014-06-14 13:01:45

标签: java android object arraylist

我有一个像下面这样的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,依此类推?

2 个答案:

答案 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)跟踪哪一个是最大的并且使您拥有最大的变量也可能会有所帮助左