使用HashMap填充Spinner?

时间:2015-01-23 23:49:36

标签: android hashmap android-spinner

我正在尝试使用我通过包含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();

        }

    });

}

有人能指出我正确的方向吗?我现在一直在谷歌搜索一个小时。任何帮助将不胜感激。

1 个答案:

答案 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()以定义应显示为文本的内容。