我正在使用我的第一个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 。如果已经有一个计时器在运行,那么一切都会停止。
现在的想法是,当计时器结束时,我想继续列表中的下一个项目。
答案 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);
}
}