我有一个微调器,当我点击微调器时(基本上就在显示列表中的项目之前),我想得到它的最后一个选定值。
我怎样才能做到这一点?
更新: 示例:有一定数量的微调器。用户点击微调器1并选择一个值,让我们说“房子”。然后点击其他地方。然后再次点击旋转器1。我现在需要的是返回之前在用户选择不同值(即该旋转器中的“car”)之前选择的值“house”。我不能事先使用本地存储来保存该值,因为它将是一个动态数量的微调器。
是的,事实上,我确实已经在http://developer.android.com/guide/topics/ui/controls/spinner.html阅读了文档,但我在那里没有解释。
答案 0 :(得分:0)
也许您可以声明一个String数组,然后使用它来存储项值。在TextView中显示它是一种查看它是否有效的方法。
这样的事情:
public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2,
long arg3) {
selection.setText(items[arg2]);
}
我已经遇到了类似的情况,但我不记得我是如何解决它的。告诉我,如果它给你一个更好的主意,我是新来的参与者。
答案 1 :(得分:-1)
Spinner mySpinner=(Spinner) findViewById(R.id.your_spinner);
String text = mySpinner.getSelectedItem().toString();
当用户从下拉列表中选择一个项目时,Spinner对象 收到一个项目选择的事件。
要为微调器定义选择事件处理程序,请实现 AdapterView.OnItemSelectedListener接口和相应的 onItemSelected()回调方法。例如,这是一个 在Activity中实现接口:
public class SpinnerActivity extends Activity implements OnItemSelectedListener { ... public void onItemSelected(AdapterView<?> parent, View view, int pos, long id) { // An item was selected. You can retrieve the selected item using // parent.getItemAtPosition(pos) } public void onNothingSelected(AdapterView<?> parent) { // Another interface callback } }
AdapterView.OnItemSelectedListener需要onItemSelected() 和onNothingSelected()回调方法。
然后你需要通过调用来指定接口实现 setOnItemSelectedListener():
Spinner spinner = (Spinner) findViewById(R.id.spinner); spinner.setOnItemSelectedListener(this);
如果用户点击了微调器,请执行以下操作:
if (spin.getSelectedItemPosition() < 0) {
Spinner mySpinner=(Spinner) findViewById(R.id.your_spinner);
String text = mySpinner.getSelectedItem().toString();
}
这意味着用户点击了微调器,但没有点击任何项目。
再次编辑
public class SpinnerActivity extends Activity implements OnItemSelectedListener {
> ...
>
> public void onItemSelected(AdapterView<?> parent, View view,
> int pos, long id) {
> parent.getItemAtPosition(pos) //THIS GETS YOU THAT VALUE THAT THE USER CLICKED ON DYNAMICALLY
> }
>
> public void onNothingSelected(AdapterView<?> parent) {
> // Another interface callback
> }
> }
http://developer.android.com/guide/topics/ui/controls/spinner.html
答案 2 :(得分:-1)
解决方案是在每个添加的Spinner中添加TextView小部件。将TextView设置为&#34;去掉了#34; (不可见)。当微调器更改时,将值设置为该TextView。这样,您可以将最后选定的微调器值存储在TextView中。当用户单击微调器并更改值时,您仍然可以通过TextView小部件从微调器访问先前选择/未选择的值。
// Use this TextView to temporarily store the spinner value
final TextView hiddenTextView = new TextView(getContext());
hiddenTextView.setVisibility(View.GONE);
final Spinner spinner = new Spinner(getContext());
spinner.setPrompt(getString(R.string.email_other));
ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(getContext(), R.array.email_types, android.R.layout.simple_spinner_item);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner.setAdapter(adapter);
spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parentView, View selectedItemView, int position, long id) {
Log.d(TAG, "TextView Value before spinner change: " + hiddenTextView.getText());
String spinnerValue = String.valueOf(spinner.getSelectedItem());
hiddenTextView.setText(spinnerValue);
Log.d(TAG, "TextView Value after spinner change: " + hiddenTextView.getText());
}
@Override
public void onNothingSelected(AdapterView<?> parentView) {
return;
}
});