首页 > 解决方案 > 在 OnClickListener 中填充并执行 Spinner

问题描述

我在使用微调器时遇到问题。由于某些原因,我需要填充微调器 ( ),然后在 EditText onClickListener 中setAdapter()显示它 ( )。performClick()

我的 Spinner 已正确初始化,因为我没有看到任何错误。只是他不会打开。以下代码将不起作用:

editText.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                List<String> statusStrings = new ArrayList<>();
                statusStrings.add("PROCESSING");
                statusStrings.add("LATE");
                statusStrings.add("DONE");
                statusStrings.add("REJECT");
                ArrayAdapter<String> adapter = new ArrayAdapter<>(MyActivity.this, android.R.layout.simple_spinner_dropdown_item, statusStrings);        adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
                spinner.setAdapter(adapter);
                spinner.performClick();
            }
        });

但是,相同的代码将在 onClick 事件之外工作。此外,我通过放置spinner.performClick();一个新线程解决了我的问题,如下所示:

editText.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    List<String> statusStrings = new ArrayList<>();
                    statusStrings.add("PROCESSING");
                    statusStrings.add("LATE");
                    statusStrings.add("DONE");
                    statusStrings.add("REJECT");
                    ArrayAdapter<String> adapter = new ArrayAdapter<>(MyActivity.this, android.R.layout.simple_spinner_dropdown_item, statusStrings);        adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
                    spinner.setAdapter(adapter);

                    final Handler h = new Handler();
                    new Thread(new Runnable() {
                        public void run() {
                            h.postDelayed(new Runnable() {
                                public void run() {
                                    spinner.performClick();
                                }
                            }, 100);
                        }
                    }).start();
                }
            });

但是这个解决方案并不能让我满意,因为我不明白为什么我需要把它放在一个新的线程中。

有没有想过这个?谢谢

标签: javaandroidlistenerspinner

解决方案


推荐阅读