【发布时间】:2014-03-06 21:00:34
【问题描述】:
我有一个 ASyncTask 正在为我的 UserInterface 运行更新;但我不确定如何访问我的 AnalogInput[] 参数并在调用 publishProgress() 时检查我当前所在的索引;
private class AnalogUpdater extends AsyncTask<AnalogInput[], Float, Void> {
// A callback method executed on non UI thread, invoked after
// onPreExecute method if exists
// Takes a set of parameters of the type defined in your class
// implementation. This method will be
// executed on the background thread, so it must not attempt to interact
// with UI objects.
@Override
protected Void doInBackground(AnalogInput[]... params) {
try {
for (int i = 0; i < 15; i++) {
publishProgress(params[0][i].getVoltage());
}
} catch (ConnectionLostException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}
protected void onProgressUpdate(Float... f) {
// Getting reference to the TextView tv_counter of the layout
// activity_main
final String str = String.format("Voltage: %.2f", f);
final int v = Math.round(f[0] * 100);
switch (idx // How can I get this index?) {
case 1:
analogInput0VoltageText.setText(str);
analogInput0VoltageBar.setProgress(v);
break;
case 2:
analogInput1VoltageText.setText(str);
analogInput1VoltageBar.setProgress(v);
break;
case 3:
analogInput2VoltageText.setText(str);
analogInput2VoltageBar.setProgress(v);
break;
case 4:
analogInput3VoltageText.setText(str);
analogInput3VoltageBar.setProgress(v);
break;
case 5:
analogInput4VoltageText.setText(str);
analogInput4VoltageBar.setProgress(v);
break;
case 6:
analogInput5VoltageText.setText(str);
analogInput5VoltageBar.setProgress(v);
break;
case 7:
analogInput6VoltageText.setText(str);
analogInput6VoltageBar.setProgress(v);
break;
case 8:
analogInput7VoltageText.setText(str);
analogInput7VoltageBar.setProgress(v);
break;
case 9:
analogInput8VoltageText.setText(str);
analogInput8VoltageBar.setProgress(v);
break;
case 10:
analogInput9VoltageText.setText(str);
analogInput9VoltageBar.setProgress(v);
break;
case 11:
analogInput10VoltageText.setText(str);
analogInput10VoltageBar.setProgress(v);
break;
case 12:
analogInput11VoltageText.setText(str);
analogInput11VoltageBar.setProgress(v);
break;
case 13:
analogInput12VoltageText.setText(str);
analogInput12VoltageBar.setProgress(v);
break;
case 14:
analogInput13VoltageText.setText(str);
analogInput13VoltageBar.setProgress(v);
break;
case 15:
analogInput14VoltageText.setText(str);
analogInput14VoltageBar.setProgress(v);
break;
case 16:
analogInput15VoltageText.setText(str);
analogInput15VoltageBar.setProgress(v);
break;
}
}
希望这很清楚;参考评论“我怎样才能得到这个索引?”在代码中。 }
【问题讨论】:
-
好吧,你可以创建一个小对象来保存电压和索引,然后将两者一起传递到同一个对象中,而不是只传递一个浮点数。
-
所以就像一个新的Java对象类,带有索引和电压的构造函数;那么只需将 AsyncTask Progress 更改为新对象的类型?
-
是的。这就是我会做的。
-
我试一试;谢谢!
标签: android arrays asynchronous android-asynctask