【问题标题】:Populating Spinner using a HashMap?使用 HashMap 填充 Spinner?
【发布时间】:2015-03-23 02:56:47
【问题描述】:

我正在尝试使用我通过简单适配器创建的自定义类中的项目填充微调器,其中包含 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();

        }

    });

}

谁能指出我正确的方向?我已经在谷歌上搜索了一个小时。任何帮助将不胜感激。

【问题讨论】:

标签: android hashmap android-spinner


【解决方案1】:

好吧,你没有发布足够多的代码,但假设你有一个HashMap&lt;String, Object&gt;,那么你想做这样的事情,将值数组传递给构造函数:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-19
    • 1970-01-01
    • 2021-05-06
    • 1970-01-01
    相关资源
    最近更新 更多