我正在尝试使用我通过包含HashMap的简单适配器创建的自定义类中的项来填充微调器。当我使用setSimpleAdapter()
时,我的应用程序一直崩溃,所以我评论了它。但是当我使用spinner1.setAdapter(dataAdapter)
时,它在微调器上没有显示任何项目。这是我的代码:
这是我的onCreate()
:
spinner1 = (Spinner) findViewById(R.id.spinner1);
ArrayAdapter <CharSequence> dataAdapter =
new ArrayAdapter <CharSequence> (this, android.R.layout.simple_spinner_item );
dataAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner1.setAdapter(dataAdapter);
//setSimpleAdapter();
// Spinner item selection Listener
addListenerOnSpinnerItemSelection();
// Button click Listener
addListenerOnButton();
// Add spinner data
public void addListenerOnSpinnerItemSelection(){
spinner1.setOnItemSelectedListener(new CustomOnItemSelectedListener());
}
//get the selected dropdown list value
public void addListenerOnButton() {
spinner1 = (Spinner) findViewById(R.id.spinner1);
btnSubmit = (Button) findViewById(R.id.btnSubmit);
btnSubmit.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
final AlertDialog alertDialog = new AlertDialog.Builder(MainActivity.this).create();
alertDialog.setTitle("X");
alertDialog.setMessage("" + String.valueOf(spinner1.getSelectedItem()));
alertDialog.setButton("Close", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
//Dismisses alert
alertDialog.dismiss();
}
});
alertDialog.show();
}
});
}
有人能指出我正确的方向吗?我现在一直在谷歌搜索一个小时。任何帮助将不胜感激。
答案 0 :(得分:2)
嗯,你没有发布一半的代码,但是说你有一个HashMap<String, Object>
然后你想做这样的事情,将值数组传递给构造函数:
Collection<Object> vals = hashMap.values();
Object[] array = vals.toArray(new Object[vals.size()]);
ArrayAdapter<CharSequence> dataAdapter = new ArrayAdapter<CharSequence>(this, android.R.layout.simple_spinner_item, array);
只需将Object
替换为您的自定义类,并确保覆盖toString()
以定义应显示为文本的内容。