【发布时间】:2016-05-16 19:49:32
【问题描述】:
我在一个 Android Activity 中有一个 Spinner 元素。
现在我想要这样,如果我选择了这个 Spinner 的 Item,我应该能够创建一个新的 Spinner 并将其放入我的活动中。如果我选择第二个 Spinner 的一个项目,我应该能够创建一个新的 Spinner ....
这是代码:
public Dialog onCreateDialog(Bundle savedInstanceState) {
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
v = getActivity().getLayoutInflater().inflate(R.layout.alert_insert_dialog, null);
builder.setView(v);
builder.setTitle("Insert Alerts");
builder.setCancelable(false);
listValueSet_Agent = new ArrayList<AlertValueSet>();
valueSet = new AlertValueSet("2.16.840.1.113883.1.11.20.4","106190000",
"2.16.840.1.113883.6.96","Penicillin","SNOMED CT");
listValueSet_Agent.add(valueSet);
valueSet = new AlertValueSet("2.16.840.1.113883.1.11.20.4","281647001",
"2.16.840.1.113883.6.96","Aspirin","SNOMED CT");
listValueSet_Agent.add(valueSet);
valueSet = new AlertValueSet("2.16.840.1.113883.1.11.20.4","282100009",
"2.16.840.1.113883.6.96","Codeine","SNOMED CT");
listValueSet_Agent.add(valueSet);
valueSet = new AlertValueSet("2.16.840.1.113883.1.11.20.4","282100009",
"2.16.840.1.113883.6.96","Select Agent","SNOMED CT");
listValueSet_Agent.add(valueSet);
//spinner status
Spinner sAgent = (Spinner) v.findViewById(R.id.combo_agent);
adapterAgent = new ArrayAdapter<AlertValueSet>(v.getContext(),
android.R.layout.simple_spinner_item, listValueSet_Agent);
sAgent.setAdapter(adapterAgent);
sAgent.setSelection(0);
sAgent.setOnItemSelectedListener(new SpinnerActivity());
return builder.create();
}
这个类是 OnItemSelectedListener 类的实现:
public class SpinnerActivity implements AdapterView.OnItemSelectedListener {
public void onItemSelected(AdapterView<?> parent, View view, int pos,long id) {
Spinner spinnerAgentN = new Spinner(v.getContext());
spinnerAgentN.setAdapter(adapterAgent);
spinnerAgentN.setSelection(listValueSet_Agent.size()-1);
spinnerAgentN.setOnItemSelectedListener(new SpinnerActivity());
LinearLayout linearLayout = (LinearLayout)v.findViewById(R.id.layoutText);
linearLayout.addView(spinnerAgentN,2);
}
@Override
public void onNothingSelected(AdapterView<?> arg0) {
}
}
现在的问题是,如果我尝试运行我的应用程序,每次都会调用这个方法(onItemSelected),并且我可以在我的活动 N 微调器中看到,但这并不好。
如果我尝试删除此代码:
spinnerAgentN.setOnItemSelectedListener(new SpinnerActivity());
我没有任何问题。
我该如何解决?
【问题讨论】:
-
我认为与其每次都创建新的微调器,不如根据所选项目更改适配器数据。
-
你能解释一下你的解决方案吗?
标签: android