使用 HashMap 填充 Spinner?
Populating Spinner using a HashMap?
我正在尝试使用自定义 class 中的项目填充微调器,我通过一个包含 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();
}
});
}
任何人都可以指出我正确的方向吗?我已经在谷歌上搜索了一个小时了。任何帮助将不胜感激。
嗯,你的代码 post 还不够一半,但假设你有一个 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
替换为您的自定义 class 并确保覆盖 toString()
以定义应显示为文本的内容。
我正在尝试使用自定义 class 中的项目填充微调器,我通过一个包含 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();
}
});
}
任何人都可以指出我正确的方向吗?我已经在谷歌上搜索了一个小时了。任何帮助将不胜感激。
嗯,你的代码 post 还不够一半,但假设你有一个 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
替换为您的自定义 class 并确保覆盖 toString()
以定义应显示为文本的内容。