如何使用微调器显示两点之间的距离和时间?

时间:2015-07-14 15:52:45

标签: android android-spinner

我想通过从一个微调器中选择town-a然后从另一个微调器中选择town-b来创建一个app。然后我想显示这些城镇之间的距离以及从选定城镇到达那里所需的时间。

我找到了类似的东西:

var dist = [
['Town B', [], []],
['Town C', [67], ['1h00m']],
['Town D', [282,251], ['11h10m','10h00m']],
['Town E', [243,210,41], ['9h45m','8h25m','1h40m']],

现在这显然是HTML下拉框,然后从上面的文件(dist.js)计算

现在我想知道如何将其转换为使用两个微调器。我想我有基本的想法,但不知道如何实施。我想的是当选择微调器1然后旋转器2然后它需要说旋转器1 =旋转器2并且距离是67km并且获得的时间是1h00m。

我没有为此原因编写代码我还没有尝试过,因为我不确定从哪里开始。所以希望有人能帮助我吗?

修改

这就是我所熟悉的:

public class MainActivity extends Activity implements OnItemSelectedListener {

private Spinner startloc;
private Spinner enddes;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    startloc = (Spinner) findViewById(R.id.spinner1);
    ArrayAdapter<CharSequence> adapter_start = ArrayAdapter
            .createFromResource(this, R.array.start_location,
                    android.R.layout.simple_spinner_item);
    adapter_start.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    startloc.setAdapter(adapter_start);
    startloc.setOnItemSelectedListener(this);

    enddes = (Spinner) findViewById(R.id.spinner2);
    ArrayAdapter<CharSequence> adapter_end = ArrayAdapter
            .createFromResource(this, R.array.end_location,
                    android.R.layout.simple_spinner_item);
    adapter_end.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    enddes.setAdapter(adapter_end);
    enddes.setOnItemSelectedListener(this);
}

@Override
public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2,
        long arg3) {


}


@Override
public void onNothingSelected(AdapterView<?> arg0) {
    // TODO Auto-generated method stub

}

而且:

<string-array name="start_location">
    <item>Town a</item>
    <item>Town b</item>
    <item>Town c</item>
</string-array>

<string-array name="end_location">
    <item>Town a</item>
    <item>Town b</item>
    <item>Town c</item>
</string-array>

<string-array name="distance">
    <item>0</item>
    <item>67</item>
    <item>282</item>
    <item>251</item>
</string-array>

<string-array name="time">
    <item>0m</item>
    <item>2h40m</item>
    <item>11h10m</item>
    <item>10h00m</item>

所以基本上这意味着:城镇a到城镇a是0,时间是0,然后城镇a到城镇b是67km,时间是2h40m,城镇a到城镇c是282km 11h10m,最后城镇b到城镇c 251km和时间是10点钟。 (并且显然需要与列表顺序相反)

现在该怎么做?

屏幕截图:

enter image description here

1 个答案:

答案 0 :(得分:1)

我认为你可能会对填充微调器的数据如何在Android中起作用感到困惑。

Android中的Spinner使用适配器为Spinner填充后备数据。数据可以是自定义对象,字符串,整数等的集合...... Spinner还可以注册一个监听器,这样当从Spinner中选择一个项目时,会产生一个回调,指示选择了哪个项目。

一个非常简单的实现是使用Strings数组填充Spinners。当为Spinner1进行选择时,您将该值存储在某处。当为Spinner2进行选择时,您将存储该值并检查是否已为Spinner1进行了选择。如果已经为每个微调器进行了选择,那么您将能够查找每个选择的距离/时间。一个非常简单的方法是使用if-else语句:

if (spinnerOne.equals("Denver")) {
    if (spinnerTwo.equals("New York") {
        //Print out that distance equals 1280 miles
    } else if (spinnerTwo.equals("San Fransisco") {
        //Etc...
    }
} else if (spinnerOne.equals("New York") {
    //Etc...
}

我上面描述的实现是一种超级简单的方法,可以工作,但主要是为了说明。可能有更好的方法来构建数据。