Android:转到列表中的下一个项目

时间:2014-01-12 11:36:34

标签: android listview countdowntimer onitemclick

我正在使用我的第一个Android应用程序:我在列表中显示了计时器列表(CountDowntTimer)。勾选( onItemClick )其中任何一个时,计时器开始运行。定时器工作得很好,但是当每个定时器结束时,我想跳转到List的下一个元素并执行下一个定时器。

我不知道怎么做:也许我可以从CountDownTimer的 onFinish 方法调用onItemClick()方法?我不知道如何使用正确的参数(AdapterView a,View v,int position,long id)

还有其他方法吗?可能有,但我不知道。

提前感谢您的帮助!

这里有一些代码:

lstRepeticiones.setOnItemClickListener(new OnItemClickListener() {
            public void onItemClick(AdapterView<?> a, View v, int position, long id) {
                if(!timerHasStarted){

                String opcionSeleccionada = 
                            ((Repeticion)a.getAdapter().getItem(position)).getTitulo();
                lblEtiqueta.setText("Opción seleccionada: " + opcionSeleccionada);

                countDownTimer = new MyCountDownTimer((Integer.parseInt(datos[position].getDuracion().toString()) *1000), 1000,a , v , position , id);
                countDownTimer.start();
                timerHasStarted = true;
            }
            else{
                lblEtiqueta.setText("Elija opción");
                countDownTimer.cancel();
                timerHasStarted = false;
            }

在那里你可以看到每个onItemClick上我如何根据一些数据写一个 TextView (屏幕上的消息)。之后,我为该选择启动相应的计时器,并在该选项所在的位置屏幕上表示 CountDownTimer 。如果已经有一个计时器在运行,那么一切都会停止。

现在的想法是,当计时器结束时,我想继续列表中的下一个项目。

3 个答案:

答案 0 :(得分:0)

对于每个项目编写代码以在onFinish()方法中启动另一个计时器。

new CountDownTimer(30000, 1000) {

     public void onTick(long millisUntilFinished) {
         mTextField.setText("seconds remaining: " + millisUntilFinished / 1000);
     }

     public void onFinish() {
         //Start another CountDownTimer
     }
  }.start();
祝你好运!

答案 1 :(得分:0)

无需以编程方式调用onItemClick(),而只需直接从onItemClick()调用代码即可。无论如何,如果没有看到你的代码就不容易给出一个好的答案。

答案 2 :(得分:0)

正如你所说,onItemClick是非常方便的地方。但是不要调用onItemClick,只需在活动类中实现它,为此,您需要将此implements语句添加到您的活动中:ActivityName implements AdapterView.OnItemClickListener

public void onItemClick(AdapterView<?> adp, View view, int position, long id) {
    // Do whatever you want for the current view here
    // You want to start the timer here, you can also keep a global variable of this and call it currentlyRunningTimer.
    // at onFinish method, you can start another timer

   // The next view is at position + 1, listView is a variable for your ListView
   View nextItem = listView.getChildAt(position+1);

   if(nextItem != null){
      // Do whatever you want here, for the next item.
      // you can access items in the next item like this
      TextView text = (TextView) child.findViewById(R.id.text);
   }

}