小编典典

Android中的动态微调器(常规工作流程问题)

java

像这样的一个,我已经看到了一些如何做的这个网站,但说实话,我真的不 得到它

我希望一个微调器的内容基于先前的微调器选择,例如在“州和城市”场景中。一般而言,什么是工作流程?是根据第一个微调框过滤第二个微调框的结果,还是第二个微调框指向基于第一个微调框的完全不同的列表?

对于我自己的简单学习项目,我在strings.xml中构建了几个字符串数组(AL-城市,AK-城市,AR-
城市等)。我希望城市微调器根据状态微调器的选择从正确的数组中填充。但是我想知道是否应该只使用一个大型多维数组“城市”,将状态缩写作为附加标识符,然后将第二个微调器指向使用状态缩写作为过滤器的那个。前者似乎可以提供更好的性能。

任何帮助(和代码示例)将不胜感激。我对编程并不陌生(大多数情况下是php,所以我想脚本编写更准确),但是对Java来说我是新手。到目前为止,我的代码与微调器未链接在一起,下面是第二个微调器指向未分化的city_array的代码。

谢谢!

public class Example1 extends Activity {

/** Called when the activity is first created. */
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.example1);

   Spinner spinState = (Spinner) findViewById(R.id.spin_state);
    ArrayAdapter<CharSequence> adapter3 = ArrayAdapter.createFromResource(
            this, R.array.state_array, android.R.layout.simple_spinner_item);
    adapter3.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    spinState.setAdapter(adapter3);

    Spinner spinCity = (Spinner) findViewById(R.id.spin_city);
    ArrayAdapter<CharSequence> adapter4 = ArrayAdapter.createFromResource(
            this, R.array.city_array, android.R.layout.simple_spinner_item);
    adapter4.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    spinCity.setAdapter(adapter4);
}
}

阅读 235

收藏
2020-11-30

共1个答案

小编典典

您可以尝试从您选择的第一个微调器中获取位置,然后在基于该位置检索适当的数组之后填充第二个微调器。

您必须聆听第一个适配器的更改:

    spinner. setOnItemSelectedListener(new MyOnItemSelectedListener());


class MyOnItemSelectedListener implements OnItemSelectedListener {
    public void onItemSelected(AdapterView<?> parent,
        View view, int pos, long id) {
        String choice = parent.getItemAtPosition(pos).toString();
            populateSecondSpinnerMethod(choice)
       }
    }
    public void onNothingSelected(AdapterView parent) {       // Do nothing.
    }
}
2020-11-30